Canvas, Programowanie, Delphi


Obszar rysowania czyli Canvas

Wszelkie operacje na grafice odbywają się na obiekcie typu TCanvas (kanwie).

Główne właściwości kanwy:

Brush określa atrybuty wypełnienia rysowanych obiektów:

Font ustawianie czcionki.np.:

Pen - (pióro) wszystkie właściwości rysowania lini - kontur.

Główne metody kanwy:

Canvas.TextOut(100, 200,”Programowanie w Delphi");

Ćwiczenia do metody CANVAS

Zajmiemy się rysowaniem po formularzu czyli grafiką. Metoda, która będzie nam to tego potrzebna nazywa się Canvas i określa obszar rysowania. Metoda ta jest dostępna dla wielu obiektów, nas głownie będzie interesowała dla formularza, ponieważ właśnie po formularzu będziemy rysowali. Dla metody canvas istniej wiele procedur i funkcji, najlepiej można się o tym przekonać wpisując Canvas. I rozwinie się lista tych metod. Niektóre z nich zostaną omówione.

Przykład1:

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 (końcowego) po klinięciu na formularz, np.:

procedure TForm1.FormClick(Sender: TObject);

begin

Canvas.MoveTo(0,0);

Canvas.LineTo(Form1.Width, Form1.Height);

end;

narysuje linię prowadzącą z lewego górnego narożnika formy do jej lewej dolnej krawędzi.

Przykład2

Do wygenerowania punktu może służyć metoda Pixels, po dwukrotnym kliknęciu na formularz np.:

procedure TForm1.FormDblClick(Sender: TObject);

begin

Canvas.Pixels[120,240]:=clLime; //wygenerowanie punktu na formularzu w kolorze Lime

end;

Przykład 3

Teraz narysujemy krzywe. Do ich rysowania służy funkcja PolyBezier(canvas handle, pointer to array of TPoint, number of points).

Wszystkie te instrukcje najlepiej umieścić w procedurze:

procedure TForm1.FormPaint(Sender: TObject);

begin

end;

uruchamianej po zajściu zdarzenia OnPaint polegającego na konieczności odświeżania formularza.

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.:

Narysujemy w lewym górnym rogu formularza gwiazdę:

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;


Aby wypełnić danym kolorem zamknięty obszar można 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.

Przykład4

Do narysowania figury foremnej służą procedury:

Canvas.Rectlange(X1:integer;Y1:integer;X2:integer;Y2:integer); // rysuje prostokąt o podanych wymiarach

Canvas.Ellipse(X1:integer;Y1:integer;X2:integer;Y2:integer); //rysuje elipsę o podanych wymiarach

Do określenia wypełnienia takiego obiektu służy metoda Brush np.:

Canvas.Brush.Color:=clblue //wypełnienie kolorem niebieskim

Canvas.Brush.Styl:=bsClear //obiekt zostaje wyczyszczony

Podobnie aby określić kontur obiektu należy użyć metody Pen np.”

Canvas.Pen.Color:=clred //kontur zostanie narysowany kolorem czerwonym

Canvas.Pen.Styl:=psDot //obiekt zostaje narysowany linią przerywaną

Ćwiczenia

  1. Umieść w procedurze OnPaint dla formularza polecenia które narysują koło w kolorze Lime bez wypełnienia, oraz kwadrat w kolorze Fuchsia wypełniony deseniem zakreskowanym.

  2. Narysuj na formularzu koła olimpijskie każde w innym kolorze.

  3. Narysuj na formularzu kwadrat i wpraw go ruch, tak aby zmieniał swoje na formularzu.

  4. Umieść na formularzu tekst „Programowanie w Delphi” i wpraw ten tekst w ruch tak aby pojawił się z lewej strony formularza i chował się z prawej strony. Wystarczy jeżeli ruch zostanie wykonany raz.

  5. Narysuj na formularzu choinkę i gwiazdkę oraz dołóż kolędę, która będzie uruchamiana po kompilacji programu.

  6. Wykonaj w delphi formularz w którym zademonstrujesz możliwości rysowania na formularzu różnych figur.



Wyszukiwarka

Podobne podstrony:
programowanie w delphi i c++ builder ii czesc MAYYMABSRUI5UEU3TMO5XUFRDPRBWZNIJRHDQIA
programuje w delphi i c builder (2)
Programuje w Delphi i C Builder II czesc
programuje w delphi i c builder cz 2
Programuje w Delphi i C Builder
(ebook www zlotemysli pl) programuje w delphi i c builder fragment 5PPAHMAWVNSHPBZMERMG65NYA5XFVPW3
programuje w delphi i c builder cz 2
(ebook www zlotemysli pl) programuje w delphi i c++ builder ii czesc fragment 5ZBFVK33H7G4Q3G26VRL
r-autorzy-04, Programowanie, ! Delphi, Delphi 6 - Vademecum profesjonalisty - Tom I
programuje w delphi i c builder
Programuję w Delphi i C Builder II cześć
Delphi - Wykłady, Programowanie, Delphi
Programuje w Delphi i C Builder II czesc
ebook programuje w delphi i c++ builder ii czesc YBXIEH6YNGVF6EM4EGLDTT7L4B4GDOKYTHBHO6A
Programuję w Delphi i C++ Builder Part I
CD Player Data i czas, Programowanie, Delphi
Programuje w Delphi i C Builder II czesc
Programuje w delphi i c builder cz 2

więcej podobnych podstron