Zitat von
JensHeinrichs:
Hallo
ich habe folgendes Problem:
Wenn ein bestimmtes Ereigniss eintritt, muß ein Bild aufgebaut und in dem Moment, wenn es komplett aufgebaut ist, mittels einer Webcam fotografiert werden. ( Die Ausgabe und die Aufnahme erfolgen über einen Beamer ) ...
Zu den Turbo-Pascal und damit lange vor den XP, NT usw. Zeiten gab es so etwas wie WaitForRetrace ...
Jens
Hallo Jens,
ich fürchte, das geht garnicht: du könntest zwar feststellen, wann dein OnPaint alle Befehle ausgegeben hat (nur für von dir programmierte Komponenten!), aber zu dem Zeitpunkt hat die Windows
GDI noch längst nicht alle Befehle ausgeführt. Sie kann daran auch durch andere Prozesse hoher Priorität BELIEBIG lange gehindert werden - Windows ist kein Real Time System, und selbst wenn es eines wäre, hätte die Anzeige keine Real Time Priorität. Übrigens geht es dann noch weiter: die Grafikkarte hat ja einen eigenen Prozessor, der die übergebenen Kommandos ja erst noch ausführen muss, eigentlich müsstest du den fragen, ob er fertig ist.
Vielleicht könntest du ganz am Schluss ein bestimmtes Pixel auf eine bestimmte Farbe setzen und das abfragen, aber ich halte es für keineswegs sicher, dass die Zeichenreihenfolge nicht in diesen Pipelines irgendwo zur Optimierung umsortiert wird.
Retrace führt in die Irre: damit konnte man feststellen, ob gerade (während des Retrace) keine Daten an den Bildschirm übertragen werden, nicht aber, ob gezeichnet wird - im Gegenteil, flimmerfreies Zeichnen im Sinn von Schreiben in den Bildspeicher findet gerade während des Retrace statt. TFTs brauchen garkein Retrace mehr.
Gruss Reinhard