Animiertes Bild - Wie am besten?

Verschiedenes zu Qt
Antworten
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Animiertes Bild - Wie am besten?

Beitrag von PeterLustig »

Moin. :)

Ich habe ein Bild, welches 6 gleich große Teilbilder enhält (kann auch mehr sein). Diese möchte ich nun gerne als Animation darstellen, sodass diese 6 Bilder sich immer wieder abwechseln im Sekundentakt. Wie würde ich so etwas lösen?
Ich habe mir überlegt das ich das gesamte Bild einlade und dann die 6 Bilder ausschneide. Dann speicher ich die 6 Bilder in QList<QPixmap>. Dann erstelle ich ein QGraphicsPixmapItem und zeige dort das erste Bild an. Über einen Timer ersetze ich das Bild dann mit setPixmap. Wäre das gut so, oder gibt es evtl eine bessere Möglichkeit?
C167
Beiträge: 105
Registriert: 9. Februar 2008 20:30

Beitrag von C167 »

schau dir mal QGraphicsItemAnimation an, vllt hilft das
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Ich wüsste jetzt nicht wie man das von mir gewollte damit machen würde.. Könntest du mir vllt. Erklären wie du das damit machen würdest?
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Per OpenGL das gesamte Bild als Textur hochladen und nur noch die Texturkoordinaten anpassen.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

QGraphicsItemAnimation ist Unsinn..

@PeterLustig mach das, was du selbst vorgeschlagen hast
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Für was hat der QPainter ein
void QPainter::drawPixmap ( const QRectF & target, const QPixmap & pixmap, const QRectF & source )
?
Da brauchts kein opengl.
Erstell dir ein eigenes Widget + SLOT. den Slot connectest du auf einen QTimer::timeout(). in dem Slot zählst du Counter hoch, welche dir zeigen, welches Teilbild des QPixmap du zeichnen sollst, und mach ein update().
Im paintEvent() errechnest du dann das source-Rect, welches du aus deinem Pixmap ausschneiden willst und zeichnest es auf das Widget.

So würds ich machen :)

Grüße
Franz
Antworten