リージョンを使って非矩形ウィンドウ(長方形でないウィンドウ)を作成する - Delphi

リージョンを使うことで、角を丸くした長方形や、円、その他自由な形、といった非矩形のウィンドウを作成できます。以下のコードは、角を丸くした長方形ウィンドウを作成するコードです。
リージョンを使い非矩形ウィンドウを作成した場合は通常表示されるウィンドウの表示内容をリージョンでマスクするだけになりますので、デフォルトの状態(BorderStyle:=bsSizeable)では、ウィンドウ枠等が含まれてしまいます。きれいに表示させるには、ウィンドウ枠を表示させない状態(BorderStyle:=bsNone)に設定します。
procedure TForm1.FormCreate(Sender: TObject);
var
  rgn:Cardinal;
begin
    rgn:=CreateRoundRectRgn(0,0,200,200,32,32);
    SetWindowRgn(Handle,Rgn,True);
end;

BorderStyle:=bsNone の場合


BorderStyle:=bsSizeableの場合


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2010-02-01
iPentec all rights reserverd.