Nieprostokątne okna PDF Drukuj Email
Wpisał doctor   
Sobota, 10. Luty 2007 03:04

Tworzenie okien o różnych kształtach 

C++ Builder umożliwia stworzenie nieprostokątnych okien.
Region jest obiektem graficznego interfejsu użytkownika (GDI).
Mamy do wyboru zaokrąglone prostokąty, elipsy czy kształt ograniczony przez odcinki.
Jedyną niedogodnością jest brak antyalisingu, przez co widać postrzępione brzegi.

Stworzenie okna o dowolnym kształcie wymaga stworzenia obszaru zwanego REGIONEM.
Sam region jest tworzony w prostokątnym (a jakże!) obszarze formy.

Przykład
Stworzymy okno o zaokrąglonych narożnikach. Będziemy korzystali z 2 funkcji:
do stworzenia regionu, CreateRoundRectRgn(lewy_x, gormy_y, prawy_x, dolny_y, promien_x, promien_y)
do ustawienia kształtu okna SetWindowRgn(Handle, Region, bool redraw);

Handle to uchwyt do formy.
Promien_x oraz y definiują promień elipsy, czyli jak mocno będą zaokrąglone narożniki.
Zmienna redraw typu bool mówi, czy odmalować kontrolki, z reguły ustawiona an true.

void __fastcall TForm1::FormCreate(TObject *Sender)
{
HRGN Region = CreateRoundRectRgn(0, 0, Form1->Width, Form1->Height, 23, 23);
SetWindowRgn(Handle, Region, true);
}

 A otrzymany efekt wygląda tak:

 

 
 

 

Poniżej przedstawię wszystkie możliwe funkcje służące do definiowania kształtu okien.

 FunkcjaKształt
 

CreateEllipticRgn

 elipsa
 

CreateEllipticRgnIndirect

 elipsa wpisana w prostokąt o podanych wymiarach
 

CreatePolygonRgn

 wielokąt, podaje się wierzchołki i rodzaj wypełnienia
 

CreatePolyPolygonRgn

 kilka wielokątów
 

CreateRectRgn

 prostokąta
 

CreateRectRgnIndirect

 prostokąta podanego jako parametr
 

CreateRoundRectRgn

 zaokrąglony prostokąt
 

ExtCreateRegion

 transformacja danego regionu
 

CombineRgn

 kombinacja dwóch regionów, np. suma elipsy i prostokąta

 

Komentarze
Dodaj nowy Szukaj
Napisz komentarz
Nick:
E-mail:
 
Strona www:
Tytuł:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Proszę wpisać kod antyspamowy widoczny na obrazku.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

LAST_UPDATED2
 
 

Losowy obraz

b9.jpg

Gościmy

Naszą witrynę przegląda teraz 29 gości 




śmieszne zdjęcia | konta | Angielski Wrocław | program partnerski | Piano Droit