【QT】使用QPainter类drawImage函数绘制透明图片的问题

今天这个问题纠结了我好久,后来终于找到了解决方法。

QT显示图片一般使用QLabel对象,然后setPixmap将图片显示出来,之前要做这么一个工作,直接上代码。


 
  
QImage sourceImage(strImageFile);//sourcefile为文件名,文件格式为PNG
QImage *subImg = new QImage(width,height,QImage::Format_ARGB32);
QPainter p(subImg);
p.setCompositionMode(QPainter::CompositionMode_Source);//注意这一行代码
p.drawImage(0,0,sourceImage,x,y,width,height);
m_pLabel = new QLabel;
m_pLabel->setMinimumWidth(600);
m_pLabel->setPixmap(QPixmap::fromImage(*subImg));


 上面标注要注意的这行代码起初一直没有加上,因此导致画出来的图片,明明应该是透明的,总是会出现莫名其妙的花点,后来加上这行代码之后就好了。 
  

QT文档上如此解释这个属性,说白了就是复制,当原图片不是透明时,与SourceOver属性效果相同

The output is the source pixel. (This means a basic copy operation and is identical to SourceOver when the source pixel is opaque).

你可能感兴趣的:(QT)