![]() |
Zeichnen verzögern
Hallo,
habe eine Frage zur Erstellung von Zeichnungen mit Image.Canvas: Wenn ich eine Linie zeichnen lasse, kann ich dann auch die Geschwindigkeit, mit der die Linie gezeichnet wird, so einstellen, dass ich im Detail sehe, wie sie gezeichnet wird? Bin auf meiner Suche auf Timer gestoßen, kann aber weder damit umgehen noch habe ich das Gefühl, dass Timer der Lösung des Problems näher kommen.. Wär nett, wenn ihr mir helfen könntet :) |
Re: Zeichnen verzögern
Nein, die Geschwindigkeit, mit der eine Linie gezeichnet wird, kann man nicht beeinflussen. Entweder du zeichnest sie seber Punkt für Punkt selber in einer Schleife mit einer Pause oder du benutzt dazu einen Timer.
|
Re: Zeichnen verzögern
Danke erstmal für die Antwort, werde es vorerst mit sleep versuchen und mich sonst nochmal melden..
|
Re: Zeichnen verzögern
so gehts!
Delphi-Quellcode:
procedure TForm1.langsamzeichnen;
var i,x,y,laenge:integer; begin laenge:=200; x:=500; y:=100; for i:=0 to laenge do begin canvas.Pixels[a,b]:=clblack; a:=a+1; sleep(50); end; end; |
Re: Zeichnen verzögern
Danke für die Hilfe! Aber leider besteht mir sleep das Problem, dass mir das Bild erst angezeigt wird, wenn es fertig ist. Ich kann die Verzögerung also nicht sehen :-/ dabei würde ich gerne eine Art Körper zeichnen lassen (zu Anfang tuts ein Strich), der sich dann von links nach rechts durchs gezeichnete Bild bewegt...
|
Re: Zeichnen verzögern
|
Re: Zeichnen verzögern
|
Re: Zeichnen verzögern
du musst in die Schleife noch ein Application.Processmessages packen. Ansonsten wird eben solange wie deine Schleife läuft keine Message verarbeitet und somit auch keine Message welche ein zeichnen auf dem Bildschirm veranlasst.
|
Re: Zeichnen verzögern
Hi,
ansonsten könntest du auch noch einen Timer nehmen.
Delphi-Quellcode:
procedure TForm1.langsamzeichnen;
begin Timer1.Interval := 200; Timer1.Tag := 50; Timer1.Enabled := true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled := Timer1.Tag< 150; canvas.Pixels[Timer1.Tag, 40] := clblack; Timer1.Tag := Timer1.Tag + 1; end; procedure TForm1.Button1Click(Sender: TObject); begin langsamzeichnen; end; |
Re: Zeichnen verzögern
Vielen vielen Dank!! Mit dem Timer funktionierts perfekt =)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 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