![]() |
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 |
Re: aufeinanderfolgende Bildinhalte darstellen
einfach immer Image1.update oder refresh ausprobieren
|
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 |
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. |
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: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 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