[Delphi] Animationen ohne Refresh

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von splinter, 31. Dezember 2006 .

  1. 31. Dezember 2006
    Animationen ohne Refresh

    Hi!

    Inner Schule sind wir grad dabei nen paar Animationen in Delphi zu proggen doch irgendwie gefällt mir das nicht das man auf das Programm nicht mehr zugreifen kann beim Abspielen und das der Bildschirm so flackert...

    Habt ihr ne Ahnung wie man das Umgehen kann?! Wir machen das zur Zeit so das jedes "Bild" einer Animation einzeln mit einer Schleife gezeichnet wird und dann Halt das Alte übermalt wird. Dabei arbeiten wir mit dem Refresh-Befehl...

    Für Hilfe wäre ich sehr dankbar!

    mfg
     
  2. 31. Dezember 2006
    AW: Animationen ohne Refresh

    stichwort application.processmessages;
    application.processmessages bewirkt, dass die anwendung noch auf eingaben reagiert während die schleife läuft und in der lage ist sich selbst neu zu zeichnen.
    musst dir dazu ma was rausgooglen
     
  3. 31. Dezember 2006
    AW: Animationen ohne Refresh

    Weitere Möglichkeit:
    Verlagere das Zeichnen in einen eigenen Thread der mit geringer Priorität im Hintergrund den Kram zeichnet
     
  4. 31. Dezember 2006
    AW: Animationen ohne Refresh

    Ich halte es für die bessere Variante einen extra Thread zu machen für die Zeichenprozedur. Ein neuer Thread ist wie ein eigenständiger Prozess uns beeinflusst damit den Programmablauf deines Hauptprogramms nicht. Application.ProcessMessages ist dafür etwas leichter aber durchläuft dafür immer beim Aufruf wie WinProc, was bei vielen Aufrufen sehr CPU-lastig wird.

    Gegen das Flackern der Animation musst du dich mal über double-buffering informieren.
     
  5. 4. Januar 2007
    AW: Animationen ohne Refresh

    Hey ho
    Wie KingKa0s schon am Ende seines Betrags erwähnt hat, hilft es gegen das Flackern wenn du das double-buffering (ist von typ boolean) auf "true" setzt.

    Code:
    doublebuffered := true;

    MFG
    Storch
     
  6. 5. Januar 2007
    AW: Animationen ohne Refresh

    Wenn ihr eh jedesmal das KOMPLETTE bild neuzeichnet, dann lass den refresh-befehl raus.

    Alternative: Erstell dir im Hintergrund (Zum Beispiel als Datentyp image) ein zweites bild, der sogenannte "Buffer".
    Dort führst du alle Zeichenmethoden aus, die eigentlich an den bildschirm gehen sollten.
    Wenn das fertig ist, Überzeichne einfach den Bildschirm mit dem Bufferbild. Da wird dann auch kein refresh mehr benötigt.

    ciao - Idefix!
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.