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