ウィンドウの形を四角以外にする

ウィンドウを四角以外、例えば楕円や多角形にするにはリージョンを使用します。リージョンは CreateRectRgn API や CreateEllipticRgn API を使って作成します。作成したリージョンを SetWindowRgnでウィンドウと合成して完了です。以下のサンプルはウィンドウを三角形にします。

■ ウィンドウの形を三角形にする例
  procedure TForm1.FormCreate(Sender: TObject);
  var
    Rgn1  : HRgn;
    pntXY : array [0..3] of TPoint;
  begin
    { 多角形の作成 }
    pntXY[0].x  :=  0;
    pntXY[0].y  :=  0;
    pntXY[1].x  :=  width div 2;
    pntXY[1].y  :=  height;
    pntXY[2].x  :=  width;
    pntXY[2].y  :=  0;
    pntXY[3].x  :=  0;
    pntXY[3].y  :=  0;
    { リージョンの割り当て }
    Rgn1  :=  CreatePolygonRgn(pntXY, 3, Winding);  
    SetWindowRgn(Handle, Rgn1, True);
  end;

CreateEllipticRgn 楕円リージョンの作成
CreateEllipticRgnIndirect 楕円リージョンの作成(Rect使用)
CreatePolygonRgn 多角形リージョンの作成
CreatePolyPolygonRgn 複数の多角形リージョンの作成
CreateRectRgn 長方形リージョンの作成
CreateRectRgnIndirect 長方形リージョンの作成(Rect使用)
CreateRoundRectRgn 角の丸い長方形リージョンの作成
CombineRgn ふたつのリージョンを合成する