Aby cokolwiek narysować, musimy mieć dostęp do kontekstu urządzenia zwanego
HDC. Służą do tego funkcje GetDC oraz GetWindowDC. W tym przykładzie zajmiemy się rysowaniem linii łamanej, poprzez połączenie zbioru punktów ją wyznaczających. Nie będziemy tu korzystać z metod LineTo oraz MoveTo.
Na początek wygenerujemy sobie punkty, które będą wyznaczać łamaną. Potem przekazujemy je jako parametr do funkcji Polyline. Należy pamietać, aby po skończonej operacji zwolnić uchwyt urządzenia za pomocą funkcji ReleaseDC.
Cały kod przedstawia się następująco:
HDC dc = GetWindowDC(Form1->Handle); TPoint P[100];
int maxx = Form1->Width; int maxy = Form1->Height;
for(int i=0;i<100;i++) { P[i].x = random(maxx); P[i].y = random(maxy); }
Polyline(dc,P,100); ReleaseDC(Form1->Handle, dc);
|
W przykładzie stworzono proste zabezpieczenie mające na celu losowanie współrzędnych punktów znajdujących się
jedynie na formie. Do tego celu służą dwie zmienne typu int, maxx oraz maxy.
Funkcja Polyline ma postać:
bool
Polyline(HDC dc, const POINT* a, int liczba_punktów)
gdzie:
liczba punktów określa, ile punktów ma zostać narysowanych. LIczba ta nie musi być koniecznie równa liczbie zdefiniowanych punktów.