Tutorials
Andorra 2D Tutorials
Canvas
Einleitung
In diesem Tutorial behandle ich den Andorra 2D Canvas, welchen es ab Version 0.2 gibt (oder schon jetzt im CVS Archiv). Dabei handelt es sich um ein Objekt, auf das man ähnlich wie bei der Windows GDI Grafiken zeichenen kann. Zur Zeit können mit dem Andorra 2D Canvas die folgenden Objekte gezeichnet werden:
- Text
- Linien
- Pfeile
- Rechtecke
- Beliebige Vierecke
- Kreise/Ellipsen
Dies hört sich nicht sehr spektakulär an, allerdings muss man beachten das die meisten Objekte mit Farbverlauf, sowie texturiert gezeichnet werden können.
Verwendung
Das TAdDraw Objekt beinhaltet (so wie jedes Andorra 2D Surface, das von TAdRenderingSurface abgeleitet ist, also auch TAdTextureSurface) ein eigenes "Canvas" Objekt, auf welches man einfach zugreifen kann. Um auf Canvas-Spezifische Typen zugreifen zu können, sollte noch die Unit "AdCanvas" eingebunden werden.
AdDraw1.ClearSurface(clBlack);
with AdDraw1.Canvas do
begin
//Hier landet der Canvas-Code
Release; //<-- Lässt man diese Zeile weg, wird nichts gezeichnet
end;
AdDraw1.EndScene;
AdDraw1.Flip;
Das Canvas verwaltet intern so genannte "Displaylisten". In diesen werden die Canvas-Objekte gesammelt. Mit dem aufruf von "Release" wird die Liste gezeichnet und eine neue erstellt.
Die Farbpalette
Am Rande sei auf die Unit "AdConsts.pas" hingewiesen. Diese enthält alle vom W3C definierten SVG-Farbkonstanten. Siehe: http://www.w3.org/TR/css3-color/#svg-color. Diese Farben können nach sehr einfach verwendet werden.
Stifte und Pinsel
Wie bei TCanvas besitzt auch TAdCanvas zwei essenzielle Objekte: Einen Pen und einen Brush. Über den Pen kann eingestellt werden, wie Linien aussehen sollen, über den Brush kann das aussehen der Füllung verändert werden.
TAdBrush besitzt folgende Eigenschaften:
GradientColor:TAndorraColor //Verlaufsfarbe
GradientDirecton:TAdCanvasGradientDirection //Richtung des Verlaufes (gdVertical, gdHorizontal)
Style:TAdBrushStyle //Stil (abClear, abSolid, abGradient)
Texture:TAd2dTexture //Textur, mit der das Objekt gefüllt werden soll
TextureMode:TAdCanvasTextureMode //Art, wie das Objekt mit der Textur gefüllt werden soll (tmTile, tmStretch, tmStretchAlign)
TexturePosition:TAdCanvasTexturePosition //Wo sich die Textur befinden soll (tpStatic, tpDynamic)
BlendMode:TAd2dBlendMode //Beschreibt, wie das Objekt geblendet werden soll
Bei TAdPen sieht es ähnlich aus:
Width:single //Breite des Stifts
Texture:TAd2dTexture //Textur des Stifts
TextureMode:TAdCanvasTextureMode //Art, wie die Line mit der Textur gefüllt werden soll (tmTile, tmStretch, tmStretchAlign)
TexturePosition:TAdCanvasTexturePosition //Wo sich die Textur befinden soll (tpStatic, tpDynamic)
PenPosition:TAdPenPosition //Wo sich die Line befinden soll (ppOuter,ppMiddle,ppInner)
Style:TAdPenStyle //Stil der Line (apNone, apSolid)
BlendMode:TAd2dBlendMode //Beschreibt, wie das Objekt geblendet werden soll
Linen Zeichnen
Es gibt zwei Befehle, die wichtig sind, um eine Linie zu Zeichenen:
LineTo(X,Y) //Von der letzten Stelle oder der Stelle, die mit MoveTo gesetzt wurde, zur angegebenen Stelle zeichnen
Beispiel 1:
Pen.Color := AdCol32_Black; // := Ad_ARGB(255, 0, 0, 0);
MoveTo(0,0);
LineTo(100,100);
Beispiel 2:
Pen.Width := 4;
Pen.Color := Ad_ARGB(255,0,0,255);
MoveTo(0,0);
Pen.Color := Ad_ARGB(255,255,0,0);
LineTo(100,100);
Rechtecke Zeichnen
Dazu steht der Befehl "Rectangle" zur Verfügung:
Beispiel 1:
Pen.Color := AdCol32_Coral;
Brush.Color := AdCol32_CornflowerBlue;
Rectangle(1,1,100,100);
Beispiel 2:
Pen.Color := Ad_ARGB(255,0,0,255);;
Pen.Style := apSolid;
Brush.Color := Ad_ARGB(255,255,255,0);
Brush.GradientColor := Ad_ARGB(255,255,0,255);
Brush.GradientDirecton := gdHorizontal;
Rectangle(1,1,100,100);
Kreise Zeichnen
Hierzu wird der Befehl "Circle" oder "Ellipse" verwendet.
Beispiel 1:
Pen.Style := apNone;
Brush.Color := AdCol32_Azure;
Brush.GradientColor := AdCol32_Orange;
Circle(50,50,50);
Text Zeichnen
Hierzu wird der Befehl "Textout" verwendet.
Beispiel 1:
Pen.Color := Ad_ARGB(200, 0, 0, 255);
Textout(0,0,'Test Text!');
Beispiel 2:
Font := AdDraw.Fonts.GenerateFont('Comic Sans MS',12, [afItalic]);
Textout(0,0,'Test Text!');
Copyright und Lizenz
(c) by Andreas Stöckel Mai 2007
Revision 2: Dezember 2007
Revision 3: Juli 2008
Der Inhalt dieses Tutorials steht unter der GNU Lizenz für freie Dokumentation.
This page was generated with the help of the following PHP-Scripts: GeSHi a free PHP Syntax highlighter and StringParser_BBCode a free BBCode Parser.