4.7 и нравится накладывать два изображения на qgraphicsview. Изображение сверху должно быть полупрозрачным, чтобы было видно сквозь него. Первоначально оба изображения полностью непрозрачны. Я ожидал, что будет существовать некоторая функция для установки глобального альфа-значения для каждого пикселя, но, похоже, такой функции нет. Наиболее близким к нему является QPixmap :: setAlphaChannel (const QPixmap & alphaChannel), который, однако, помечен как устаревший с Qt-4.6. Вместо этого руководство ссылается на CompositionModes QPainter, но мне не удается добавить прозрачность непрозрачного изображения, как я хочу.
Может ли кто-нибудь указать мне рабочий пример или поделиться кодом?
Edit:
Я почти извиняюсь за собственный ответ, сейчас, через несколько часов после того, как задал вопрос.
Из этой статьи я понял, что следующий код выполняет свою работу. Мне просто интересно, считается ли это «лучше» (что часто переводится как более быстрое), чем изменение значений альфа по пикселям.
QPainter p;
p.begin(image);
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(image->rect(), QColor(0, 0, 0, 120));
p.end();
mpGraphicsView->scene()->addPixmap(QPixmap::fromImage(image->mirrored(false,true),0));