![]() |
Zeichnen einer farbigen Linie
Grüße...
Ich wollte mal fragen wie ich in Delphi eine Linie zeichen kann, diese muss auch in verschiedenen Farben aufgeteilt werden! Würde mich sehr über einige Tipps freuen schonmal im Vorraus vielen dank! |
Re: Zeichnen einer farbigen Linie
Willst du einen Farbverlauf zeichnen oder so was ähnliches?
Entweder du musst die Linie in mehreren abschnitten Zeichen (Linienzug) oder mit transparenter Farbe und dann Farben im Alpha-Image |
Re: Zeichnen einer farbigen Linie
hallo und willkommen in der dp ;-)
linien kannst du folgendermaßen zeichnen:
Delphi-Quellcode:
procedure DrawLine(Index: Integer; Canvas: TCanvas; var Rect: TRect; DrawingHintText: Boolean; DoDraw: Boolean; var
DefaultDraw: Boolean); |
Re: Zeichnen einer farbigen Linie
oder mit
Delphi-Quellcode:
canvas.moveto(StartPunkt.X, StartPunkt.Y);
canvas.lineto(EndPunkt.X, EndPunkt.Y); |
Re: Zeichnen einer farbigen Linie
aus eigener Intresse habe ich mal was zusammen geschrieben, für dich:
Delphi-Quellcode:
Die Anzahl der Farben spielt hier eine Rolle, je mehr Farben, desto bunter wird die Line Logischer weise,
procedure DrawColorLine(aCanvas:TCanvas;x,y,w,h:Integer; colors:array of TColor);
var len,aw,ah,i:Integer; begin len:=High(colors); aw:=w div len; ah:=h div len; for i:=0 to len do begin acanvas.Pen.color:=Colors[i]; acanvas.MoveTo(x,y); acanvas.LineTo(x+aw,y+ah); x:=x+aw; y:=y+ah; end; // for i:=0 end; // So kann es verwendet werden procedure TForm1.Button1Click(Sender: TObject); begin DrawColorLine(Paintbox1.Canvas,10,10,50,10,[clLime, ClRed, clBlue,clBlack,clWhite, clAqua],30); end; Ich war etwas überrascht das es so einfach ist. Was meint ihr ? ich habe einige Tests gemacht, anscheid klappt es so. |
Re: Zeichnen einer farbigen Linie
habe gerade bemerkt das die Funktion ein kleinen BUG hat.
Leider kann man damit keine Vertikalen oder Horizontalen Linen Zeichnen. Nur Schräge. bzw. normalerweise DrawColorLine(Paintbox1.Canvas,10,10,50,10,[clLime, ClRed, clBlue,clBlack,clWhite, clAqua],30); müsste dieser Aufruf doch eine Horizontale Linen ergeben die 40 Pixel Lang/breit ist, oder nicht ? wenn ich die erste 50 gegen 45 austausche geht es.... ich vermute ich müsste noch was mit dem Winkel machen richtig ? Aber wie berechne ich einen Winkel und setzte ihn ein ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 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