|
Zajmiemy się rysowaniem po formularzu. Jednak nie omówię tu rzeczy, które są powrzechnie znane. Narysujemy linie proste, krzywe, figury geometryczne, nauczymy się wypełniać zamknięte obszary. Na początek linie. Do narysowania linii prostej służą funkcje MoveTo(x, y) i LineTo(x, y). Pierwsza z nich służy do ustalenia pierwszego punktu, a drugi do ustalenia drugiego, np.: MoveTo(0, 0); LineTo(Form1.Width, Form1.Height)narysuje linię prowadzącą z lewego górnego narożnika formy do jej lewej dolnej krawędzi. Teraz narysujemy krzywe. Do ich rysowania służy funkcja PolyBezier(canvas handle, pointer to array of TPoint, number of points). Narysujemy dwiema krzywymi ósemkę: var pkt : array[1..4] of TPoint; // tablica ze współrzędnymi begin pkt[1] := Point(100, 0); // podanie współrzędnych pkt[2] := Point(0, 50); pkt[3] := Point(200, 100); pkt[4] := Point(100, 150); PolyBezier(Canvas.Handle, pkt, 4); // narysowanie pierwszej części pkt[1] := Point(100, 0);// podanie nowych współrzędnych pkt[2] := Point(200, 50); pkt[3] := Point(0, 100); pkt[4] := Point(100, 150); PolyBezier(Canvas.Handle, pkt, 4); // narysowanie drugiej części end;Do narysowania figur można wykorzystać dwie funkcje: PolyLine(canvas handle, pointer to array of TPoint, number of points) lub Polygon(canvas handle, pointer to array of TPoint, number of points); np.: var pkt : array[1..6] of TPoint; begin pkt[1] := Point(40, 10); pkt[2] := Point(20, 60); pkt[3] := Point(70, 30); pkt[4] := Point(10, 30); pkt[5] := Point(60, 60); pkt[6] := Point(40, 10); Polyline(Canvas.Handle, pkt, 6); end; var pkt : array[1..4] of TPoint; begin pkt[1] := Point(100, 0); pkt[2] := Point(0, 200); pkt[3] := Point(300, 200); pkt[4] := Point(200, 0); Polygon(Canvas.Handle, pkt, 4); end;Dobra, a teraz pokażę jak wypełnić danym kolorem zamknięty obszar. Służy do tego funkcja FloodFill(X, Y, TColor; TFillStyle). var pkt : array[1..4] of TPoint; begin pkt[1] := Point(100,0); pkt[2] := Point(0,200); pkt[3] := Point(300,200); pkt[4] := Point(200,0); Polygon(Canvas.Handle, pkt, 4); Canvas.Brush.Color := clRed; Canvas.FloodFill(100, 1, clWhite, fsSurface); end;Są dwie możliwości wypełnienia: fsSurface - Wypełnia obszar, który zawiera kolor zadeklarowany w funkcji; fsBorder - Wypełnia obszar, który nie zawiera koloru zadeklarowanego w funkcji. ...powrót |