Tech-Ecke / Delphi Inhalt / Canvas mit TImage

 

     Canvas mit TImage

Über die Canvas-Eigenschaft kann man auf der Form oder auch auf Komponenten Zeichnen. Sobald jedoch das Formular und deren Komponenten neu gezeichnet werden und das tritt bei jeglicher Bewegung der Form auf, verschwindet die Gezeichnete Grafik wieder und muss von neuem Gezeichnet werden (z.B. bei OnFormCreate).
Das TImage bildet hier jedoch eine Ausnahme, denn was hierauf gezeichnet wurde bleibt beim verschieben der Form und selbst beim Minimieren der Anwendung erhalten. Das Beispiel hier richten sich an das TImage, obwohl dies auch bei allen anderen Komponenten möglich ist, welche Canvas besitzen.

   Farben

Stiftfarbe

   Image1.Canvas.Pen.Color :=clRed;   // setzt Stiftfarbe (Default) auf rot
 

Pinselfarbe

   Image1.Canvas.Brush.Color :=clBlue;   // setzt Pinselfarbe (Default) auf blau
 

Hintergrundfarbe - siehe Löschen des Inhaltes
 

   Löschen des Inhaltes

Der Inhalt kann z.B. durch überzeichenen "gelöscht" werden. Dazu zeichnet man ein Quadrat welches die Abmaße der Paintbox hat. Die Farbe hierzu, kann mit Canvas.Brush.Color (Hintergrund bzw. Füllung) und Canvas.Pen.Color (Rahmen) gesetzt werden (siehe Farben)

   Image1.Canvas.Rectangle (0,0,Image1.width ,Image1.height );
 

Wenn man den Inhalt komplett löschen möchte, so dass nicht mal mehr eine "Hintergrundfarbe" vorhanden ist, dann geht das so:

   Image1.Picture := nil
 

   Stiftdicke

   Image1.Canvas.Pen.Width := 1;   // Stiftdicke 1 wählen (Pixelstärke)
 

   Setzen des Zeichenstiftes

   Image1.Canvas.MoveTo(x,y);   // x und y sind die Koordinaten in Pixel
 

   Punkt

   

Image1.Canvas.Pixels [x,y]; // setzt einen Punkt in der Default Farbe

Image1.Canvas.Pixels [x,y] := clBlack;   // setzt einen schwarzen Punkt bei den Koordinaten x y ab

farbe := Image1.Canvas.Pixels[x,y]; // liest die Farbe des angegebenen Punktes aus (var farbe muss Typ TColor sein)

 

   Linie

Eine Linie wird von der aktuellen Stiftposition (siehe: Setzen des Zeichenstiftes) zur angegebenen Position gezeichnet

   Image1.Canvas.LineTo(x,y); // x und y sind die Endkoordinaten der Linie in Pixel
 

   Rechteck

Die anzugebenden Koordinaten beschreiben ein Rechteck, durch Angabe des oberen/linken Punktes (x1,y1) und unteren/rechten Punktes (x2,y2).

   Image1.Canvas.Rectangle(Rect(x1,y1,x2,y2))
 

   Kreis und Ellipse

Der gezeichnete Kreis hat immer eine Füllfarbe die mit Canvas.Brush (siehe Farben) gesetzt werden kann. Der eigentliche Kreis nimmt ohne Angabe die gesetzte Farbe mittels Canvas.Pen (siehe Farben). Die anzugebenden Koordinaten beschreiben ein Rechteck, durch Angabe des oberen/linken Punktes (x1,y1) und unteren/rechten Punktes (x2,y2). Die Ellipse befindet sich dann innerhalb dieses Rechteckes, wobei dessen 4 Kanten die bestimmenden Tangenten sind. Einen Kreis ereicht mal also durch angeben eines Quatrates.

   Image1.Canvas.Pixels (x1,y1,x2,y2);   // zeichnet einen Kreis bzw. Ellipse in das definierte Rechteck
 

   Flächen ausmalen bzw. füllen

Die Füllfarbe wird mit Canvas.Brush (siehe Farben) gesetzt. Zum Füllen einer geschlossenen Geometrie gibt man einen Punkt über Koordinaten (x,y) an, der innerhalb der selbigen liegen.

   Image1.Canvas.FloodFill(x,y,clBlack,fsBorder);   // Füllt die durch Geometrie begrenzte Fläche mit schwarz
 

   Textausgabe über Canvas

  Image1.Canvas.Brush.Color := clRed;       // Hintergrundfarbe - transparent geht mit:    Image1.Canvas.Brush.Style := bsClear;
 
Image1.Canvas.Font.Color := clBlack;     
// Schriftfarbe
Image1.Canvas.Font.Name := 'Arial';       
// Schriftart
Image1.Canvas.Font.Size := 20;             
// Schriftgröße

Image1.Canvas.TextOut(10, 10, 'Hallo Welt');  
// 10,10 bestimmt die Startposition des Textes
 

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 09.10.2006]