1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| procedure TForm1.CreateParams(var Params: TCreateParams);
const
CS_DROPSHADOW = $00020000;
begin
inherited;
Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;
end;
procedure TForm1.FormCreate(Sender: TObject);
const
Pts :array[0..2] of TPoint = ((X:40; Y:20), (X:60; Y:0), (X:80; Y:20));
var
Rgn1, Rgn2 :hRgn;
begin
//Rectangle arrondi
Rgn1 := CreateRoundRectRgn(0, Pts[0].Y, ClientWidth -1, ClientHeight -1, 10, 10);
//Flèche
Rgn2 := CreatePolygonRgn(Pts, Length(Pts), WINDING);
//Combine les deux régions...
CombineRgn(Rgn1, Rgn1, Rgn2, RGN_OR);
//...et applique le résultat
SetWindowRgn(Handle, Rgn1, TRUE);
DeleteObject(Rgn1);
DeleteObject(Rgn2);
end; |
Partager