Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Zeichnen verzögern (https://www.delphipraxis.net/92592-zeichnen-verzoegern.html)

Ari 22. Mai 2007 22:58


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 :)

Luckie 22. Mai 2007 23:35

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.

Ari 24. Mai 2007 23:15

Re: Zeichnen verzögern
 
Danke erstmal für die Antwort, werde es vorerst mit sleep versuchen und mich sonst nochmal melden..

wfs12 24. Mai 2007 23:37

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;

Ari 25. Mai 2007 16:01

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...

Matze 25. Mai 2007 16:07

Re: Zeichnen verzögern
 
Hi,

dann nutze DalayDalay oder Application.ProcessMessages. Das sollte klappen.

fLaSh11 25. Mai 2007 16:07

Re: Zeichnen verzögern
 
nimm die Prozedur DelayDelay aus der CL.

//edit: mist... zu spät :(

SirThornberry 25. Mai 2007 16:08

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.

bitsetter 25. Mai 2007 16:19

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;

Ari 27. Mai 2007 12:28

Re: Zeichnen verzögern
 
Vielen vielen Dank!! Mit dem Timer funktionierts perfekt =)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz