Qt 中如何实现对图片设置透明色显示

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xj178926426/article/details/7051185

  
 Qt 中如何实现对图片设置透明色显示

咋看题目可能不是很明白是什么意思,用下面的一个简单的例子来简单的解释下。


比如说下面的一张图1:


图 1 


我们通过设置透明色为分周围的粉红色,就得到下面图2这个效果。



   图 2 


当然,也可以不必这么麻烦,可以直接通过ps等图片处理的工具,把这个图片处理成透明背景的图片然后保存成png格式也可,我这里只是想说说怎么用Qt实现。怎么写过文章,写的不好大家别扔砖哈,错误之处还请大家指出,共同进步!呵呵。


好啦,不说多的,直接上代码吧!


QImage  TestDialog::getTransImage(QImage image , QPoint ponit)


{


    //判断所取的点是否在图片内部


    if( image.valid( ponit ) )


    {


        QRgb  rgb = image.pixel( ponit );


        QVector<QRgb> rgbVector = image.colorTable () ;


        for (int i = 0; i < rgbVector.size(); ++i)


        {


             if( rgbVector.at(i) == rgb )


             {


                 /*


                注意这里如果要变成黑色背景的话就是QRgb rgb2 = QColor(0, 0, 0, 0).rgb() ;


                留意 rgb()与rgba()的区别


                */


                 QRgb rgb2 = QColor(0, 0, 0, 0).rgba() ;


                 image.setColor( i,rgb2 );


                 return image ;


             }


         }


    }


    return image ;


}



上面用到的两个重要的函数就是:
QRgb QImage::pixel ( const QPoint & position ) const
这个得到图片中某点的色素的rgb的值。
void QImage::setColor ( int index, QRgb colorValue )
设定图片的color table的索引值index所对应的颜色为 colorValue 。呵呵,英语很菜的,还是直接看文档吧,我把我的整个测试程序放到这个下面,感兴趣的可以看看,最后程序运行的结果如下:

测试程序的下载地址:

http://download.csdn.net/detail/xj178926426/3893256

 

展开阅读全文

没有更多推荐了,返回首页