Entwickler-Ecke

Multimedia / Grafik - Rechtecke mit Zeitverzug zeichnen lassen?


Ottchen - Mi 29.01.03 18:37
Titel: Rechtecke mit Zeitverzug zeichnen lassen?
Hallo Liste,

kennt jmd. eine Möglichkeit, z.B. ein Rechteck, eine Linie oder nur Punkte mit Zeitverzug (z.B. "langsam") zu zeichnen? Mit dem Timer kann ich nur einstellen, nach welcher Zeit das Rechteck gezeichnet werden soll. In TurboPascal gabs die Möglichkeit eine Wartezeit mit Delay(Zeit in Millisekunden) anzugeben.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
  with Image1.Canvas do  
    begin
      Pen.Color:=clRed;         
      Rectangle(20,30,180,90);
      Ellipse(20,30,180,90);    
    end;
end;


Danke.

Ottchen


tommie-lie - Mi 29.01.03 19:15

ich weiß zwar nicht, was du bezwecken willst, aber ein Ersatz für delay ist zumndest in Delphi6 der sleep()-Befehl.
Aber mit dem Timer geht sowas auch:
Du schaltest ihn auf Disabled und stellst die Zeit ein. Wenn du dann den Timer startest (enabled auf true), dann wird von dem Augenblick an gezählt. Der Vorteil ist, daß das Programm weiterläuft, also quasi ständig ProcessMessages ausgeführt wird und auf jedes Event gewartet wird, während sleep() dein Programm wirklich schlafen legt und dann auch keine Klicks o.Ä. mehr annimmt.


Ottchen - Mi 29.01.03 23:07
Titel: Funktionen zeichnen
Hallo Tommie-lie,

Zitat:
ich weiß zwar nicht, was du bezwecken willst


Hintergrund ist der, z.B. eine quadratische Funktion grafisch darzutellen und zwar so, dass man das Setzen von Punkten bzw. Zeichnen von Linien als Prozess verfolgen kann und nicht so, dass der Graf "sofort" erscheint.

Ottchen


MathiasH - Do 30.01.03 15:35

wenn du einen Parser zum zeichnen benutzt, kommt die Wartezeit von selber, ansonsten kannst du ja bei jedem verändern des x wertes sleep(1); schreiben, dabei läuft das ganze langsam ab und trotzdem reagiert dein Programm noch, wenn du Processmessages aufrufst

MathiasH


tommie-lie - Do 30.01.03 19:19

ähhh, bei sleep(1) bringt processMessages relativ wenig. Welche Message hat es schon so eilig, daß sie nicht mal eine Millisekunde warten kann? *g*
Ne, ich würde einen Timer verwenden: Ihn jedesmal resetten und neu starten lassen. Durch den Tag (der bei jedem Durchgang erhöht wird) wird die X-Achse festgehalten und jedesmal der entsprechende Y-Wert berechnet und gezeichnet. Finde ich gar kein Problem...