Hallo Leute,
ich habe mittels qt ein Programm geschrieben, dass eine Animation mit sekundenweisen Updates zeichnet. Damit die Animation flüssiger wird, möchte ich die Framerate erhöhen, aber wie mache ich das, ohne dass es wie verrückt flimmert? Gibt es ein passendes Widget dafür oder brauche ich eine zusätzliche Bibliothek? Wenn ja, welche?
Torsten
On Mon, Jan 28, 2002 at 02:54:55PM +0100, Torsten Werner wrote:
Hallo Leute,
ich habe mittels qt ein Programm geschrieben, dass eine Animation mit sekundenweisen Updates zeichnet.
Wenn es sich bei der Animation um einzelne Pixmaps handelt, die nacheinander gezeichnet werden, wäre eine Umwandlung der Pixmaps in ein MNG-Movie sicher anratsam. Es lässt sich dann mit QMovie abspielen und das DoubleBuffering ist schon mit drinn.
Ciao, Tobias
Am Montag, dem 28. Januar 2002 um 13:54:37, schrieb Tobias Koenig:
Wenn es sich bei der Animation um einzelne Pixmaps handelt, die nacheinander gezeichnet werden, wäre eine Umwandlung der Pixmaps in ein MNG-Movie sicher anratsam.
Das ist in meinem Fall leider keine praktikable Lösung.
Es lässt sich dann mit QMovie abspielen und das DoubleBuffering ist schon mit drinn.
Das DoubleBuffering, wie es in meiner anderen Nachricht gepostet habe, funktioniert scheinbar nicht. Wie macht das QMovie?
Torsten
Am Dienstag, dem 29. Januar 2002 um 16:16:52, schrieb Torsten Werner:
Das DoubleBuffering, wie es in meiner anderen Nachricht gepostet habe, funktioniert scheinbar nicht.
Ich bin blöd. Man darf einfach nicht paintEvent() überschreiben, dann klappt es sogar ohne DoubleBuffering.
Torsten
'n Abend,
On Monday, 28. January 2002 14:54, Torsten Werner wrote:
ich habe mittels qt ein Programm geschrieben, dass eine Animation mit sekundenweisen Updates zeichnet. Damit die Animation flüssiger wird, möchte ich die Framerate erhöhen, aber wie mache ich das, ohne dass es wie verrückt flimmert? Gibt es ein passendes Widget dafür oder brauche ich eine zusätzliche Bibliothek? Wenn ja, welche?
Du hast nicht geschrieben was du verwendest. Wie man Flimmern wegbekommt, ist Urschleim: Double-Buffering, in Qt z.B. dadurch realisierbar daß man zuerst in ein Pixmap malt und dieses dann schnell auf das Widget aufbringt.
Für Animationen ist QCanvas geeignet, und in letzter Zeit nehme ich QCanvas fast ausschließlich wenn es um schnellere Animationen geht. Nur mit Alpha-Kanälen gibt es da Probleme (QCanvasPixmap ist von QPixmap abgeleitet, was im Gegensatz zu QImage nur alpha = {0, 1} kennt). Außerdem ist QCanvas nicht für Animationen von etwa > 50 Objekten geeignet.
Die Framerate kann man mit QTimer und/oder QCanvas::setAdvancePeriod() kontrollieren.
Bei-Spiele gibt's zuhauf, z.B. bei mir im CVS das Spiel 'relokate': http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/mindx/
Josef Spillner
lug-dd@mailman.schlittermann.de