在我正在制作的节目中,我需要两张完全相同的图像,但其中一张是半透明的。出于性能原因,我想创建两个单独的QPixmaps
而不是仅使用一个并设置QPainter
的不透明度。有这么简单的方法吗?
答案 0 :(得分:0)
也许你应该阅读this example。我认为您需要使用the composition mode来实现此目的。
答案 1 :(得分:0)
不,没有高效的方法可以做到这一点。
要修改QPixmap
的频道,必须:转换为QImage
,修改后,转换回QPixmap
。根据您的申请,往返可能会更简单地在QPainter
中执行此操作:http://www.qtcentre.org/threads/51158-setting-QPixmap-s-alpha-channel
但是,如果您可以将其转换为启动时间,则往返可能是合理的,从而阻止了QPainter
中的重复转换。
QPixmap
转换为QImage
:http://doc.qt.io/qt-5/qpixmap.html#toImage QPixmap
中没有Alpha通道,则需要添加一个:http://doc.qt.io/qt-5/qimage.html#convertToFormat setPixel
:http://doc.qt.io/qt-5/qimage.html#pixel-manipulation(请注意,setPixel
需要QRgb
。您需要获得红色,绿色,以及要修改的像素中的蓝色通道,并将其与qRgba
中所需的Alpha值一起使用:http://doc.qt.io/qt-5/qcolor.html#qRgba)convertFromImage
:http://doc.qt.io/qt-5/qpixmap.html#convertFromImage