不定形フォームを作る
でもって、最初は単純なところから、不定形フォームを作ります。VC++6.0の頃は、Regionを作って苦労したわけですが、.NETの場合は、Form クラスの TransparencyKey プロパティに透明色を指定するだけで完了です。
this.panel1.Visible = false; // ビットマップを作成 Bitmap bmp = new Bitmap(this.panel1.BackgroundImage); // 左上の点を透明色にする Color col = bmp.GetPixel(0, 0); // フォームの背景を変える this.BackgroundImage = bmp; this.BackgroundImageLayout = ImageLayout.None; // リサイズ this.Size = bmp.Size; // 透明色を設定する this.TransparencyKey = col;
要は、フォームの背景(BackgroundImage)に、画像を設定して、その画像の透明色(この場合は、左上の点を透明色と決めています)とフォームの色とを一緒にすればOK。
こうすることで、画像に合わせた不定形のフォームが簡単にできます。不定形フォームというと、円型とか星型(自分もやるけど)が多いのですが、背景の絵にあわせるならば、あらかじめ画像を用意してやるほうが簡単になります。
ちなみに、変形フォームを作ると、タイトルバーがなくなるのでフォームの移動ができなくなります。これは、マウスダウン&アップを独自に取る必要があります。このあたりは、明日、続きを書きます。