【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).

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值