procedure TForm1.FormCreate(Sender: TObject);
var
R: HRgn;
P: array [0..360] of TPoint;
x,y,radius,c1,c2,theta:integer;
begin
radius:=200;
c1:=300; // center x
c2:=300; // center y
for theta:=0 to 360 do
begin
x:=c1+round(radius * cos(theta));
y:=c2+round(radius * sin(theta));
p[theta]:=point(x,y);
end;
// R := CreatePolygonRgn (P , 360 , ALTERNATE);
R := CreatePolygonRgn (P , 360 , WINDING);
SetWindowRgn(Form1.Handle, R , TRUE);
end;
Yes you have to use the CreatePolygonRgn and SetWindowRgn. In this
example I create a round form, you would have to watch you coordinates
to ensure you have the title bar still visible at the top so you can
move your form, either that or you would have to implement the
functionality yourself. Create whatever shape you want using an array of
TPoint and CreatePolygonRgn