Canvas i Delphi

Tags:    delphi
Skrevet af Bruger #66 @ 14.06.2001
Canvas i Delphi (part 1)
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.

Hvad er Canvas ?

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.

I gang med programmeringen

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.


Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (2)

User
Bruger #5097 @ 09.05.04 21:00
Hvordan regngører jeg så image kompomentet?

Flot artikel. 5 fra mig...
User
Bruger #10266 @ 30.12.06 17:31
Hvornår kommer 2'eren??????
Du skal være logget ind for at skrive en kommentar.
t