I dette kapitel vil vi se nærmere på propertyen canvas og hvordan man kan bruge den i sine programmer – men først og fremmest, vil jeg lige sige, at det at arbejde med canvas ikke er så svært ; det tager bare nogen tid.
Canvas vil en gammel Pascal programmør, nok synonymminere med unitten graph – en simpel property, der indeholder en masse forskellige procedurer til at tegne oven på visuelle komponenter med (inkl. Form´en). Den mest brugte til at tegne på er nok Timage, som jeg senere vil bruge som eksempel.
Et eksempel på at fx tegne en ellipse:
image1.canvas.Ellipse(10,10,400,200); //image1 er et Timage
Canvas er til gavn for dem, der gerne vil ændre lidt på et visuelt komponents udseende, tegne noget uden at bruge særlig mange resurser eller til sidst: til folk, der gerne vil lave tegneprogrammer.
Vores mål nu, er at lave et program, der tegner en baggrund på et Timage ved hjælp af en masse forskellige streger i forskellige farver. Vi skal bruge en Ttimer (paletten System) og et Timage (paletten Additional). Vi sætter vores Ttimers Name til timer og propertien interval til 10 . Udover det, sætter vi vores Timage´s Name til baggrund og Allign til Client.
Først skal vi lige tilføje ’x : integer;’ under public. Koden til programmet…
procedure TForm1.FormCreate(Sender: TObject);
begin
x:=0;
randomize; //da vi skal bruge tilfældige farver senere klargører vi random-funktionen.
end;
procedure TForm1.TimerTimer(Sender: TObject);
begin
x:=x+1;
with baggrund.canvas do
begin
pen.Color:=random(999999); //skifter farven linierne
moveto(x,0); //flytter pointeren til "punkt 1"
lineto(x,baggrund.height); //trækker en streg fra "punkt 1" til "punkt 2"
end;
if x > baggrund.width then timer.enabled:=false; //hvis x-aksen er større end baggrunds bredde,
stopper den med at skrive
end;
Dette var bare et eksempel på MoveTo og LineTo, men der findes mange andre måder at tegne på:
Rectangle
Ellipse
Arc
Pie
Text (grafisk tekst)
Pixels
Udover disse metoder til at tegne ’figurer’, findes der også andre metoder til at ændre på figurerne. Fx floodfill, der kan fylde sammensatte pixels med en farve plus en del andre. Vi vil nu prøve at lave en ellipse og fylde den med en tilfældig farve, hver gang timeren tegner en linie. For at gøre det, skal man bare tilføje disse linier under ”With baggrund.Canvas do begin”,
brush.Color:=random(9999999); //sætter fyldfarven til tilfældig værdi
ellipse(10,10,200,150); //tegner ellipsen
Til sidst vil jeg gerne uddybe pen-property´en lidt. Med den kan du kontrollere farven på din streg (canvas.pen.color), bredden (canvas.pen.width) og en masse andre sjove ting, der alle styrer den streg tegne-metoderne tegner med.
I næste del (part 2), vil vi kigge nærmere på hvordan man kan bruge Canvas til at lave et simpelt tegneprogram.