![]() |
Canvas.LineTo ändert nicht Farbe
ich habe in meinem Programm folgenden Code:
Delphi-Quellcode:
Nun erwartet man doch, dass mit jeder Bewegung der Maus die Farbe der Linie per Zufall gesetzt wird.
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); var r,g,b: Byte; rt: TRect; begin r := Random(256); g := Random(256); b := Random(256); Label1.Caption := Format('R = %d, G = %d, B = %d', [r,g,b]); Canvas.Brush.Style := bsSolid; Canvas.Brush.Color := RGB(r,g,b); rt.Left := 1; rt.Top := 1; rt.Right := 40; rt.Bottom := 40; Canvas.FillRect(rt); Canvas.MoveTo(0,0); Canvas.LineTo(x,y); end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; end; Jedoch behält die Linie IMMER die Farbe Schwarz, obwohl das Label nicht 'R = 0, G = 0, B = 0' ausgibt und das gefüllte Rechteck auch die entsprechende Farbe besitzt. Wie kann ich also eine Linie zeichnen, die die gewünschte Farbe besitzt? |
Re: Canvas.LineTo ändert nicht Farbe
die farbe ändert sich nicht weil die Farbe für LineTo mit Canvas.Pen.Color gesetzt werden muss und nicht mit Canvas.Brush.Color
|
Re: Canvas.LineTo ändert nicht Farbe
danke.
|
Guten Morgen zusammen,
entschuldigt bitte, dass ich diesen etwas älteren Thread wieder auskrame. Ich habe aber einer Erklärung dafür [:P]: habe keine Ergebnisse gefunden über Google und der Referenz-Suche, die mich weiterbringen. Also mein Problem ist, dass der besagte Canvas.Pen nicht die Farbe darstellt, die ich ihm zugewiesen habe. So hab ich es in meinem Code eingebunden.
Code:
Wo liegt der Fehler? Oder gibt es keinen? :?:
procedure TForm1.FormCreate(Sender: TObject);
begin Step := 1; Const_X := 44; Const_Y := 147; imGraphOut.Canvas.Pen.Color := RGB( 33, 0, 127 ); imGraphOut.Canvas.MoveTo( Const_X, Const_Y ); end; procedure TForm1.tiTimerTimer(Sender: TObject); begin IF imGraphOut.Canvas.PenPos.X > ( Const_X + 120 ) THEN imGraphOut.Left := ( imGraphOut.Left - 1 ); imGraphOut.Canvas.LineTo( Const_X + Step, Const_Y - Random ( 140 ) ); INC( Step ); end; Schönen Morgen euch allen noch und vielen Dank schonmal im Voraus für die Hilfe. Gruß, Marcel |
AW: Canvas.LineTo ändert nicht Farbe
Zitat:
und dabei wird auch die Farbe verändert. :zwinker: PS: Es wird/könnte auch die Position, des Zeichencursors verändert werden und nicht nur die Farbe. Lösung: zusammenhängende Zeichenoperationen gehören auch zusammen. |
AW: Canvas.LineTo ändert nicht Farbe
Alles klar. Vielen Dank.
Dann muss ich mal schauen, wie ich das alles in den Timer eingebaut bekomme... Edit: So, ich hab es geändert, aber der Stift bleibt immernoch schwarz. Jetzt weiß ich nichtmehr weiter...
Code:
Gut, ist bestimmt nicht die sauberste Lösung, aber ich weiß es nicht besser zu lösen. :)
procedure TFahrtenschreiber.FormCreate(Sender: TObject);
begin [...] FirstRunTimer := True; [...] end; procedure TFahrtenschreiber.tiTimerTimer(Sender: TObject); begin IF FirstRunTimer = True THEN begin imGraphOut.Canvas.Pen.Color := RGB( 33, 0, 127 ); imGraphOut.Canvas.MoveTo( Const_X, Const_Y ); end; FirstRunTimer := False; IF ( imGraphOut.Canvas.PenPos.X > ( Const_X + 120 ) ) AND ( imGraphOut.Canvas.PenPos.X < ( Const_X + 1220 ) ) THEN imGraphOut.Left := ( imGraphOut.Left - 1 ); imGraphOut.Canvas.LineTo( Const_X + Step, Const_Y - Random ( 140 ) ); INC( Step ); end; Woran könnte es denn noch liegen, dass der Stift immernoch schwarz ist und bleibt? Schönen Abend noch. |
AW: Canvas.LineTo ändert nicht Farbe
Wie wäre es, wenn du das auch wirklich zusammenhängend ausführen würdest?
Delphi-Quellcode:
//...
imGraphOut.Canvas.Pen.Color := RGB(33, 0, 127); imGraphOut.Canvas.LineTo(Const_X + Step, Const_Y - Random(140)); // ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 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