有没有办法通过组合2种不同颜色在PyQt中制作新的QColor?类似的东西:
QColor([30, QColor(123,0,45, 100)], [70, QColor(12, 34, 56, 100)])
其中30和70表示要采用的新颜色的百分比。
我需要的是在不透明的颜色上层叠半透明颜色的等效颜色。
答案 0 :(得分:2)
你提问已经有一段时间了,但当然有一种方法可以将这些颜色“混合”在一起;它可能不是微不足道的,但它肯定是可能的。
通过这样做可以非常容易地组合两种颜色(假设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()
)
在两种颜色之间进行插值。
但是,这并没有考虑到一种颜色在另一种颜色之上。由于第一种颜色是不透明的,因此产生的颜色也是不透明的。但是,需要考虑alpha值的分数来计算得到的颜色,看起来像(取决于你的问题的解释):
QColor(color1.red() + .color2.alpha() * color2.red(),
color1.green() + .color2.alpha() * color2.green(),
color1.blue() + .color2.alpha() * color2.blue(),
1
)