Kiedyś w CD-Action było tekie fajne menu o poszarpanych krawędziach okna. Słyszałem że można to uzyskać dzięki API. Wie może ktoś jak coś takiego zrobić?
Tu masz przykład:
procedure TForm1.Button1Click(Sender: TObject);
var
punkty:array[0..7] of TPoint;
begin
punkty[0]:=Point(1, 1);
punkty[1]:=Point(2, 0);
punkty[2]:=Point(4, 5);
punkty[3]:=Point(6, 7);
punkty[4]:=Point(8, 9);
punkty[5]:=Point(10, 10);
punkty[6]:=Point(9, 0);
SetWindowRgn(handle,CreatePolygonRGN(punkty,7,1),True);
end;
//SetWindowRgn(handle,CreatePolygonRGN(punkty,ilość punktów,1),jakiś sposób wycinania);
end;
na borland.pl jest kod coś o strechDIBbits, na podstawie bitmapy to było i chodziło o winietke programu, dokładnie nie pamiętam
Mozesz tez zrobic okno bsNone, przykryc je cale bitmapa ktorej obrzeza sa np. zolte, ustawic transparency formy na true i transparentcolor na zolty
dobra, każdy ma swój sposób, czekałtnij:
procedure TForm1.FormPaint(Sender: TObject);
var
hdc:word;
x,y,w,h:integer; // zmienne pomocnicze
t:tpoint;
tb:tbitmap;
begin
// oblicz położenie elementu na ekranie
t.x := left; t.y := top;
ScreenToClient( t );
x := t.x; y := t.y;
w:=Image1.Picture.Bitmap.Width;
h:=Image1.Picture.Bitmap.Height;
Image1.Picture.Bitmap.TransparentColor := clWhite;
hdc := GetDC( 0 ); // pobierz DC ekranu
tb := tbitmap.create; // stworzę maskę przezroczystości
tb.assign( Image1.Picture.Bitmap );
tb.mask( clWhite );
TransparentStretchBlt( hdc, x, y, w,h,
Image1.Picture.Bitmap.Canvas.handle,0,0,w,h,
tb.canvas.handle,0,0);
tb.free;
ReleaseDC( 0, hdc ); // koniecznie zwalniaj wszytskie handle
end;
tego kodu jeszcze nie testowałem, więc ten okd nie jest pewny, ale wygląda na dobry, więc po dobrych kombinacjach zapewne bedzie działał