我在Qt中的视频上覆盖了透明图像(QImage)。我想只在点击按钮时更改透明图像的颜色。有人能告诉我怎么做吗?
谢谢。
答案 0 :(得分:6)
这可以通过多种方式完成。我建议使用QPainter
来创建新图像。如果您设置了SourceIn
合成模式,则起始图像的Alpha通道将应用于您将要执行的任何绘图。您只需要用所需的颜色填充图像。
QPixmap source_image; // should be preserved in a class member variable
QRgb base_color; // desired image color
QPixmap new_image = source_image;
QPainter painter(&new_image);
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
painter.fillRect(new_image.rect(), base_color);
painter.end();
ui->label->setPixmap(new_image); // showing result
请注意,我使用QPixmap
代替QImage
,因为QPixmap
更有效地显示(并且可能会绘制)。如果您出于某种原因仍想使用QImage
,则此代码将与QImage
一起使用而不做任何更改(当然不包括最后一行)。
来源图片: 结果: