Лучший способ нарисовать QPixmap с помощью 'color mod' - PullRequest
0 голосов
/ 04 марта 2019

Некоторые библиотеки рендеринга позволяют устанавливать «цветовой мод» (например, в SDL2 вы делаете это с SDL_SetTextureColorMod) при рисовании текстуры, что эффективно умножает цвета пикселей на заданное значение перед рисованием.Как лучше всего добиться этого в Qt5, например, при рисовании QPixmap с QPainter::drawPixmap?Пока что единственный вариант, который я вижу, это использовать временное растровое изображение, залить его цветом, на который я хочу умножить, затем нарисовать на нем QPainter::CompositionMode_Multiply и затем вывести результат на целевое устройство.Есть ли более простой способ, который может не включать рисование во временное растровое изображение?

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете обойтись без временной растровой карты, нарисовав прямоугольник с размером вашей растровой картинки в вашей цели:

QPixmap const src(":/images/img.png");
painter->fillRect(QRect(QPoint(0, 0), src.size()), Qt::red);
painter->setCompositionMode(QPainter::CompositionMode_Multiply);
painter->drawPixmap(QPoint(0, 0), src);

Если у вашей растровой карты есть прозрачные области, вы можете добавить painter->setClipRegion(src.mask()); перед вызовом fillRect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...