不定形フォームを作る

でもって、最初は単純なところから、不定形フォームを作ります。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。
こうすることで、画像に合わせた不定形のフォームが簡単にできます。不定形フォームというと、円型とか星型(自分もやるけど)が多いのですが、背景の絵にあわせるならば、あらかじめ画像を用意してやるほうが簡単になります。

ちなみに、変形フォームを作ると、タイトルバーがなくなるのでフォームの移動ができなくなります。これは、マウスダウン&アップを独自に取る必要があります。このあたりは、明日、続きを書きます。