• 4966阅读
  • 4回复

[提问]如何使图片的背景色变为透明? [复制链接]

上一主题 下一主题
离线feixiangxtu
 

只看楼主 倒序阅读 楼主  发表于: 2013-04-01
我想在一个按钮上设置一副BMP/jpg/png格式的图片,如何使图片的背景色变为透明使得跟按钮的底色一样。


谢谢。

离线ffii4455

只看该作者 1楼 发表于: 2013-04-01
png可以,用ps搞成背景透明就行了。
离线feixiangxtu

只看该作者 2楼 发表于: 2013-04-01
有程序可以完成吗?我记得wince下有这种接口的。可以报背景的某种颜色设置为透明色
离线feixiangxtu

只看该作者 3楼 发表于: 2013-04-01
    QPixmap pixmap = QPixmap(":/images/logo.jpg");
    QPixmap temp(pixmap.size());
    temp.fill(Qt::transparent);
    QPainter p(&temp);
    p.setCompositionMode(QPainter::CompositionMode_Source);
    p.drawPixmap(0, 0, pixmap);
    p.setCompositionMode(QPainter::CompositionMode_SourceOver);
    p.fillRect(temp.rect(), QColor(255, 255, 255, 70)); //QColor(0, 0, 0, 184)
    p.end();
    pixmap = temp;
    pDisLogo->setPixmap(pixmap);

网上找到了解决方案,主要注意这个参数CompositionMode_SourceOver,另外在执行 p.fillRect(temp.rect(), QColor(255, 255, 255, 70));时,如果背景是全黑就用(255,255,255),如果是全白用(0,0,0),具体根据实际背景颜色。另外a值根据自己实际情况进行调整。
离线jxhxfen2008

只看该作者 4楼 发表于: 2013-04-02
引用第3楼feixiangxtu于2013-04-01 22:18发表的  :
    QPixmap pixmap = QPixmap(":/images/logo.jpg");
    QPixmap temp(pixmap.size());
    temp.fill(Qt::transparent);
    QPainter p(&temp);
    p.setCompositionMode(QPainter::CompositionMode_Source);
.......

额,你好,弱弱的问一下setCompositionMode(QPainter::CompositionMode_Source)
和fillRect什么意思
快速回复
限100 字节
 
上一个 下一个