Смешивать цвета в PyQt? - PullRequest
       6

Смешивать цвета в PyQt?

0 голосов
/ 10 сентября 2011

Есть ли способ сделать новый QColor в PyQt, комбинируя 2 разных цвета? Что-то вроде:

QColor([30, QColor(123,0,45, 100)], [70, QColor(12, 34, 56, 100)])

, где 30 и 70 представляют процент нового цвета, который нужно взять.

Мне нужен эквивалентный цвет наложения полупрозрачного цвета поверх непрозрачного.

1 Ответ

2 голосов
/ 27 ноября 2011

Прошло много времени с тех пор, как вы спросили, но, конечно, есть способ «смешать» эти цвета вместе; это может быть не тривиально, но, безусловно, возможно.

Объединить два цвета можно довольно легко, выполнив (при условии, что color1 и color2 оба QColors):

QColor(.3* color1.red()   + .7 * color2.red(),
       .3* color1.green() + .7 * color2.green(),
       .3* color1.blue()  + .7 * color2.blue(),
       .3* color1.alpha() + .7 * color2.alpha()
      )

, который интерполирует между двумя цветами.

Однако это не учитывает того, что один цвет накладывается на другой. Поскольку первый цвет непрозрачен, результирующий цвет также непрозрачен. Тем не менее, для вычисления результирующего цвета необходимо учитывать долю альфа-значения, которая выглядит примерно так (в зависимости от интерпретации вашего вопроса):

QColor(color1.red()   + .color2.alpha() * color2.red(),
       color1.green() + .color2.alpha() * color2.green(),
       color1.blue()  + .color2.alpha() * color2.blue(),
       1
      )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...