Как нарисовать затемненную 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)));
Другие вопросы по тегам