如何绘制黑暗的QPixmap?

时间:2018-03-22 18:11:31

标签: c++ qt qt5 qpainter qpixmap

我正在寻找一种快速有效的方法来绘制带有QPainter的QPixmap,但是pixmap看起来比正常更暗。是否有某种过滤器或效果可以在绘制时应用于QPixmap或QPainter以创建此效果?

2 个答案:

答案 0 :(得分:4)

您在QPixmap中没有像素访问权限,因此无法覆盖像素并使其变暗是不可能的。

然而,您可以使用透明的黑色笔刷填充像素图,并使用多种合成模式来进一步自定义结果。

    QPainter painter(this);
    QPixmap pm("d:/test.jpg");
    painter.drawPixmap(QRect(0, 0, 400, 200), pm);
    painter.translate(0, 200);
    painter.drawPixmap(QRect(0, 0, 400, 200), pm);
    painter.fillRect(QRect(0, 0, 400, 200), QBrush(QColor(0, 0, 0, 200)));

enter image description here

答案 1 :(得分:1)

某些早期的注释将在屏幕上留下一个深灰色的矩形。使用合成模式时,所有可见的部分都会变暗,但所有透明区域仍保持透明。

painter.setCompositionMode (QPainter::CompositionMode_DestinationIn);
painter.fillRect (rect, QBrush (QColor (0,0,0,128)));