2015-03-30 1 views
0

Je dois mettre en miroir une image. J'ai cette partie accomplie, mais l'image originale disparaît dans ma zone d'image quand cette fonction est appelée. J'ai sauvé l'image originale et en utilisant QPainter a dessiné l'original puis le miroir, pensant que les deux images seraient composées. Je ne reçois toujours que l'image en miroir. Je veux à la fois l'image miroir et l'image originale sur ma zone d'image unique. Voici ce que j'ai jusqu'ici.Comment fusionner deux images en mode qt après mise en miroir?

QImage* Original= mImage; //original image 
QImage reflection = mImage->mirrored(true,false);//mirror the original image 

QPainter painter(mImage); 

painter.CompositionMode_DestinationOver; 
painter.drawImage(0, 0, *mImage); 
painter.drawImage(0, 0, reflection); 
painter.end(); 

Répondre

0

QPainter :: CompositionMode_DestinationOver

L'alpha de la destination est utilisé pour le mélanger au-dessus de la source pixels.

Si votre image ne possède pas de couche alpha, vous ne verrez aucune différence. En outre, vous avez d'autres problèmes dans votre code.

  • dessin de l'image sur lui-même est inutile
  • painter.end(); est inutile
  • mode de composition
  • de réglage se fait avec painter.setCompositionMode();
  • mode de composition
  • est définie entre les dessins


QPainter painter(mImage); 
painter.setCompositionMode(QPainter::CompositionMode_DestinationOver); 
painter.drawImage(0, 0, reflection); 
+0

Merci, j'ai créé un canal alpha, mais maintenant la mise en miroir ne fonctionne pas \t \t 'QImage mask = mImage-> createAlphaMask(); \t \t QPainter painter (&mask); ' – rampency

+0

Vous avez également besoin de pixels avec une transparence visible. – svlasov