QLabel - Darstellungsfehler bei setMovie mit mng Datei
Verfasst: 30. Juli 2007 12:27
Hallo,
ich habe vor kurzem versucht in einem QLabel eine .mng Animation abzuspielen. Das .mng stelle eine "pulsierende" Maschine dar und hatte den Hintergrund transparent (pulsierend = die Maschine wird ein paar Bilder lang breiter und dann wieder dünner)
Dabei trat ein seltsamer Effekt auf:
ist die Maschine gerade dünner geworden, das heißt das aktuelle Bild wurde in der Breite verkleinert, hat man *dahinter* noch das breitere Bild gesehen, welches in der Animation vor dem aktuellen kam.
Also auf gut deutsch: die Transparenz war nicht richtig, da er alle Animationsbilder übereinander schmiert, anstatt erst den Hintergrund zu löschen und dann das aktuelle Bild zu zeichnen.
Meine gescheiterten Lösungversuche sahen so aus:
oder
oder eigenes QLabel custom Widget:
Mittlerweile weiß ich nicht mehr weiter, warum man den Hintergrund in allen Farben und Mustern ausmalen, aber nicht diesen seltsamen Fehler beheben kann.
Ich wäre SEHR froh wenn jemand weiter wüsste!
PS: Qt Version 4.1.4
ich habe vor kurzem versucht in einem QLabel eine .mng Animation abzuspielen. Das .mng stelle eine "pulsierende" Maschine dar und hatte den Hintergrund transparent (pulsierend = die Maschine wird ein paar Bilder lang breiter und dann wieder dünner)
Dabei trat ein seltsamer Effekt auf:
ist die Maschine gerade dünner geworden, das heißt das aktuelle Bild wurde in der Breite verkleinert, hat man *dahinter* noch das breitere Bild gesehen, welches in der Animation vor dem aktuellen kam.
Also auf gut deutsch: die Transparenz war nicht richtig, da er alle Animationsbilder übereinander schmiert, anstatt erst den Hintergrund zu löschen und dann das aktuelle Bild zu zeichnen.
Meine gescheiterten Lösungversuche sahen so aus:
Code: Alles auswählen
ui.m_lblvmAnimation->setBackgroundMode(Qt::TransparentMode);Code: Alles auswählen
ui.m_lblvmAnimation->setAutoFillBackground(true);Code: Alles auswählen
void qtaAnimationLabel::paintEvent(QPaintEvent *pe)
{
QPainter painter(this);
//painter.setBackgroundMode(Qt::TransparentMode); bringt nix
//painter.setBackgroundMode(Qt::OpaqueMode);
//painter.setCompositionMode(QPainter::CompositionMode_Clear);
/*QPixmap alpha(m_movie->currentPixmap());
QPixmap alphacopy = alpha;
alphacopy.setMask(alphacopy.createHeuristicMask());*/
painter.fillRect(0,0,71,59,QBrush(Qt::SolidPattern));
painter.drawPixmap(0,0,m_movie->currentPixmap());
}Ich wäre SEHR froh wenn jemand weiter wüsste!
PS: Qt Version 4.1.4