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

时间:2014-03-30 06:17:38   收藏:0   阅读:934

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

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】使用QPainter类drawImage函数绘制透明图片的问题,布布扣,bubuko.com

原文:http://blog.csdn.net/yangyunchenrt/article/details/22558177

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!