我正在寻找一种快速有效的方法,可以使用QPainter绘制QPixmap,并使得该pixmap比正常情况下更暗。是否有某种过滤器或效果,可以应用于绘制时的QPixmap或QPainter,以创建此效果?
在 QPixmap
中,您无法访问像素,因此不可能遍历像素并使它们变暗。
但是,您可以使用透明黑色画刷填充 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)));
QPixmap
是 QImage
的一个非常薄的包装器。将像素图转换为图像基本上是无操作 :) - Kuba hasn't forgotten Monica一些早期的评论会在您的屏幕上留下一个深灰色的矩形。使用合成模式,会使所有可见的东西变暗,但透明区域仍然保持透明。
原始答案:最初的回答
painter.setCompositionMode (QPainter::CompositionMode_DestinationIn);
painter.fillRect (rect, QBrush (QColor (0,0,0,128)));