Programowanie w języku Delphi » FAQ

Nieregularna forma

  • 2009-05-20 17:23
  • 1 komentarz
  • 765 odsłon
  • Oceń ten tekst jako pierwszy
W Windows 2000, XP oraz Delphi 6,7 można w prosty sposób wykonać formę o nieregularnych kształtach wykorzystując właściwości formy:

TransparentColor
i TransparentColorValue.

1. Dziura w formie
Jeżeli położymy na formie komponent TShape i ustawiamy mu kolor na clFuchsia, następnie w formie ustawiamy właściwość TransaparentColor na true, oraz TransaparentColorValue na clFuchsia.
Następnie uruchamiamy aplikację i podziwiamy dziurę w formie.

2. Nieregularna forma
Kładziemy na formie komponent TImage i ładujemy do niego obrazek, oraz ustawiamy właściwość Transparent na true. Następnie ustawiamy dla formy właściwości BorderStyle na bsNone, a w BorderIcons wyłączamy wszystkie elementy. Teraz ustawiamy kolor formy na clFuchsia oraz właściwość TransaparentColor na true, oraz TransaparentColorValue na clFuchsia.


Aby umożliwić przesuwanie formy dodajemy do obsługi zdarzenia OnMouseDown komponentu TImage kod:

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  Self.Perform(WM_SysCommand, $F012, 0);
end;

Uruchamiamy aplikację i możemy podziwiać rezultat.

Uwaga: Opisany tu sposób będzie działał tylko w Windows 2000 lub
nowszym (XP, Vista…)

Źródło: http://www.borland.pl/cgi-bin/tip.exe/showtip?mode=1&id_tip=40

1 komentarz

Piotrekdp 2006-12-20 10:31

Hmm pomysł dobry ale wykonanie nie do końca
Uwaga praktyczna
Jeśli chcesz mieć opisaną powyżej formę lepiej nie używać Komponentów do robienia tła
można rysować bitmapę bezpośrednio na TCanvas formy w zdarzeniu onPaint formularza
(oszczędzamy na szybkości i czasie wykonania i co też ważne nie mamy zawalonej całej formy  komponentem  ) .Od razu zaznaczam że wcale to nie wymusza
użycia bmp jako tła , ze względu na oszczędnośc rozmiarów exe'ca można zapisać jpg do zsobów exe'ca (Jako RC_DATA) i potem przekonwertować go w OnCreate formy.  
to tylko taka mała uwaga jak będe miał czas to rozbuduje art.