poszarpane okno

0

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ć?

0

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;

0

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

0

Mozesz tez zrobic okno bsNone, przykryc je cale bitmapa ktorej obrzeza sa np. zolte, ustawic transparency formy na true i transparentcolor na zolty

0

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ł

1 użytkowników online, w tym zalogowanych: 0, gości: 1