![]() |
Andorra 2D - Der Canvas
Das original Tutorial gibt es
![]() 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:
Verwendung Das TAdDraw Objekt beinhaltet 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.
Delphi-Quellcode:
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.
AdDraw1.BeginScene;
AdDraw1.ClearSurface(clBlack); with AdDraw1.Canvas do begin //Hier landet des Canvas-Code Release; //<-- Lässt man diese Zeile weg, wird nichts gezeichnet end; AdDraw1.EndScene; AdDraw1.Flip; 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:
Delphi-Quellcode:
Bei TAdPen sieht es ähnlich aus:
Color:TAndorraColor //Standardfarbe
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
Delphi-Quellcode:
Linen Zeichnen
Color:TAndorraColor //Farbe des Stifts
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 Es gibt zwei Befehle, die wichtig sind, um eine Linie zu Zeichenen:
Delphi-Quellcode:
Beispiel 1:
MoveTo(X,Y) //Den Zeichenstift an einer bestimmten Stelle positionieren
LineTo(X,Y) //Von der letzten Stelle oder der Stelle, die mit MoveTo gesetzt wurde, zur angegebenen Stelle zeichnen
Delphi-Quellcode:
Beispiel 2:
//Zeichnet eine weiße Linie von (0;0) zu (100;100).
Pen.Color := Ad_ARGB(255,255,255,255); MoveTo(0,0); LineTo(100,100);
Delphi-Quellcode:
Rechtecke Zeichnen
//Zeichnet eine dicke Linie mit Farbverlauf von (0;0) zu (100;100);
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); Dazu steht der Befehl "Rectangle" zur Verfügung: Beispiel 1:
Delphi-Quellcode:
Beispiel 2:
//Zeichnet ein weißes Rechteck mit blauer Umrandung von (1;1) nach (100;100);
Pen.Color := Ad_ARGB(255,0,0,255); Brush.Color := Ad_ARGB(255,255,255,255); Rectangle(1,1,100,100); Release;
Delphi-Quellcode:
Kreise Zeichnen
//Zeichnet ein Rechteck mit horizonzalem Farbverlauf und blauer Umrandung von (1;1) nach (100;100);
Pen.Color := Ad_ARGB(255,0,0,255);; Pen.Style := apSolid; Brush.Color := Ad_ARGB(255,255,255,255); Brush.GradientColor := Ad_ARGB(0,255,255,255); Brush.GradientDirecton := gdHorizontal; Rectangle(1,1,100,100); Hierzu wird der Befehl "Circle" oder "Ellipse" verwendet. Beispiel 1:
Delphi-Quellcode:
Text Zeichnen
//Zeichnet einen Kreis mit Farbverlauf und mit blauer Umrandung an Punkt (50;50) mit dem Radius 50px;
Pen.Color := Ad_ARGB(255,0,0,255); Pen.Style := apSolid; Brush.Color := Ad_ARGB(255,255,255,255); Brush.GradientColor := Ad_ARGB(255,255,255,255); Circle(50,50,50); Hierzu wird der Befehl "Textout" verwendet. Beispiel 1:
Delphi-Quellcode:
Beispiel 2:
//Zeichnet blauen Text
Pen.Color := Ad_ARGB(200, 0, 0, 255); Textout(0,0,'Test Text!');
Delphi-Quellcode:
Copyright und Lizenz
with AdDraw.Canvas do
begin Font := AdDraw.Fonts.GenerateFont('Comic Sans MS',12,[]); Textout(0,0,'Test Text!'); end; (c) by Andreas Stöckel Mai 2007 Revision 2: Dezember 2007 Der Inhalt dieses Tutorials steht unter der ![]() [edit=Jelly]Tutorial auf Wunsch des Autors angepasst Mfg, Jelly[/edit] |
Re: Andorra 2D - Der Canvas
Zeichnung des Farbverlaufes bei linie funktioniert nicht. Warum?
Delphi-Quellcode:
with AdDraw.Canvas do
begin Pen.Width:=5; Pen.Color := Ad_ARGB(255,255,0,255); MoveTo(mitte_dis_x,mitte_dis_y); Pen.Color := Ad_ARGB(100,0,0,255); LineTo(v.x,v.y); v:=mDrehen(v.x,v.y,360 DIV mAnzahl); i:=i+1; end; until mMenu[i].parent<>mMenu[mCurrentMain].id; AdDraw.Canvas.Release; |
Re: Andorra 2D - Der Canvas
Ich denke mal, dass das AdDraw.Canvas.Release in die Schleife muss.
|
Re: Andorra 2D - Der Canvas
immer noch das gleich :-(.
Delphi-Quellcode:
with AdDraw.Canvas do
begin Pen.Width:=5; Pen.Color := Ad_ARGB(255,255,0,255); MoveTo(mitte_dis_x,mitte_dis_y); Pen.Color := Ad_ARGB(100,0,0,255); LineTo(v.x,v.y); v:=mDrehen(v.x,v.y,360 DIV mAnzahl); i:=i+1; Release; end; until mMenu[i].parent<>mMenu[mCurrentMain].id; |
Re: Andorra 2D - Der Canvas
hast du auch
Delphi-Quellcode:
davor
AdDraw1.BeginScene;
AdDraw1.ClearSurface(clBlack); und
Delphi-Quellcode:
danach verwendet.
AdDraw1.EndScene;
AdDraw1.Flip; Womit Programmierst du? |
Re: Andorra 2D - Der Canvas
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, das hab ich verwendet, ich programmier mit Lazarus und OpenGL.
Hab ein Screenshot beigelegt, da sieht man auch das nächste problem, die linien auf der canvas überlagen die bilder. Kann man das verhindern; |
Re: Andorra 2D - Der Canvas
Jetzt klappts, nachdem ich die die Pinselbreite auf 0.5 gestellt hab.. komisch, der Verlauf funktioniert nur bis zu einer Pen dicke von1.
Das andere Problem steht aber noch |
Re: Andorra 2D - Der Canvas
Erst die Linien, dann die Bilder zeichnen.
|
Re: Andorra 2D - Der Canvas
Danke hatte erst andere lösung aber jetzt hats geklappt. ich musste die bilder nach "Release" zeichnen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz