Как нарисовать затемненную QPixmap?
Я ищу быстрый и эффективный способ нарисовать QPixmap с помощью QPainter, но изображение должно выглядеть темнее, чем обычно. Есть ли какой-нибудь фильтр или эффект, который можно применить к QPixmap или QPainter во время рисования, чтобы создать этот эффект?
1 ответ
Решение
У вас нет доступа к пикселям в 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)));
Некоторые из предыдущих комментариев оставят на экране темно-серый прямоугольник. Используя режим композиции, затемняет все видимое, но все прозрачные области остаются прозрачными.
painter.setCompositionMode (QPainter::CompositionMode_DestinationIn);
painter.fillRect (rect, QBrush (QColor (0,0,0,128)));