Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi aufeinanderfolgende Bildinhalte darstellen (https://www.delphipraxis.net/134003-aufeinanderfolgende-bildinhalte-darstellen.html)

trajektorde 13. Mai 2009 20:01


aufeinanderfolgende Bildinhalte darstellen
 
Hallo,

ich habe mein erstes Delphi-Programm geschrieben, -aus Basic übertragen-,
es zeichnet die Vektoren der Zetafunktion auf, wie sie sich addieren. Das geht ganz gut.
Will ich aber für unterschiedliche Ausgangswerte(des Imaginärwertes von s)
Bilder nacheinander zeichnen, dann bekomme ich erst nach längerer Zeit das letzte gezeichnete Bild zu sehen.

In Basic kann ich immer beobachten, wie sich die aufeinanderfolgenden Bilder verändern, der
Bildschirm jeweils neu gezeichnet wird, so dass sozusagen im Programmablauf eine Art Film abläuft.

Was muss ich da machen?
(das Bild wird jeweils in eine Komponente image1 gezeichnet,
die einzelnen Bilder von while .. do Schleifen erzeugt).

Vielen Dank im voraus,

Thomas

SimStar001 13. Mai 2009 20:05

Re: aufeinanderfolgende Bildinhalte darstellen
 
einfach immer Image1.update oder refresh ausprobieren

trajektorde 13. Mai 2009 21:10

Re: aufeinanderfolgende Bildinhalte darstellen
 
Hallo Marco,

vielen Dank für die schnelle Antwort,
bis jetzt hat es noch nicht geklappt,
versuche erst einmal einfach auf das Formular ohne image1
zu zeichnen, schaut etwas aussichtsreicher aus,
vielleicht liegt es aber doch auch nur an meinen
while-do-
Schleifen,
(habe bisher eigentlich immer mit for next oder goto
gearbeitet, hat auch gut geklappt),
habe nämlich bemerkt, dass nicht mein letztes, sondern doch lediglich das erste bild
angezeigt wird- da ist noch ein Fehler drin-

Grüße,
Thomas

Fussball-Robby 13. Mai 2009 21:14

Re: aufeinanderfolgende Bildinhalte darstellen
 
Es gibt einen einfachen Grund dafür, dass nicht das aktuellste Bild angezeigt wird: Während eine Schleife läuft, wird die Nachrichtenschleife deines Programms nicht weiter abgearbeitet. In dieser Nachrichtenschleife reiht sich auch WM_PAINT o.ä. ein - welches dafür verantworlich ist, dass dein Fenster neu gezeichnet - aktualisiert - wird. Erst wenn die Schleife zu Ende ist, werden die Nachrichten abgearbeitet, das letzte Bild wird angezeigt. Was bei einer Schleife helfen kann, ist, innerhalb der Schleife ein Application.ProcessMessages anzubringen, damit die Nachrichten verarbeitet und dein Fenster aktualisiert wird.

Hoffe ich konnte helfen, Gruß

Edit: So kann es dann allerdings zum Flackern des Bildes kommen. Hier hilft oft ein DoubleBuffered := True im OnCreate-Event des Formulars.

trajektorde 14. Mai 2009 13:12

Re: aufeinanderfolgende Bildinhalte darstellen
 
Hallo Robert,

vielen Dank für Deine Antwort,
konnte mich gestern(und auch bis jetzt heute irgendwie nicht mehr einloggen),
auf jeden Fall lerne ich wieder was dazu.
Ist schon spannend, allerdings war der Fehler tatsächlich im
Programmaufbau, jetzt klappt es.
(Zuvor hatte ich Variablen nicht zurückgesetzt und die Vektoren
wurden außerhalb des Bildschirms gezeichnet, seufz-
aber jetzt sieht es gut aus und ist auch richtig schnell gegenüber Blitzbasic-
wobei man dort vielleicht mit einem .exe file auch schneller wäre-
habe ich nicht probiert.

Bis bald again,-(Frage beantwortet)

Thomas

p.s.: falls jemand schauen will, wie die Vektoren funktionieren:
video(s) zur Zetafunktion:
http://www.youtube.com/watch?v=Mrdxc--e2dE


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 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