我正在寻找一种快速有效的方法来绘制带有QPainter的QPixmap,但是pixmap看起来比正常更暗。是否有某种过滤器或效果可以在绘制时应用于QPixmap或QPainter以创建此效果?
答案 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)));
答案 1 :(得分:1)
某些早期的注释将在屏幕上留下一个深灰色的矩形。使用合成模式时,所有可见的部分都会变暗,但所有透明区域仍保持透明。
painter.setCompositionMode (QPainter::CompositionMode_DestinationIn);
painter.fillRect (rect, QBrush (QColor (0,0,0,128)));