Qt 如何使用alpha通道组合两个QColor对象?

Qt 如何使用alpha通道组合两个QColor对象?,qt,alpha,Qt,Alpha,我有一些已经确定边界颜色的对象 现在我希望用户能够至少设置填充图案的不透明度。例如,边框是蓝色的。用户将不透明度设置为128,因此填充图案也以蓝色绘制,但为半透明 下一步是允许用户也稍微调整图案的颜色。例如:“使用边框颜色,但要使其半透明(alpha=128)并略带黄色。” 有没有一种(有用的)方法来组合两种颜色,其中一种颜色没有alpha值集?或者在原始颜色上设置alpha值并将其与同样设置了alpha值的“叠加颜色”相结合会更有意义吗 是否有一个函数(或者,有人能给出一个简短的代码片段)来组

我有一些已经确定边界颜色的对象

现在我希望用户能够至少设置填充图案的不透明度。例如,边框是蓝色的。用户将不透明度设置为128,因此填充图案也以蓝色绘制,但为半透明

下一步是允许用户也稍微调整图案的颜色。例如:“使用边框颜色,但要使其半透明(alpha=128)并略带黄色。”

有没有一种(有用的)方法来组合两种颜色,其中一种颜色没有alpha值集?或者在原始颜色上设置alpha值并将其与同样设置了alpha值的“叠加颜色”相结合会更有意义吗


是否有一个函数(或者,有人能给出一个简短的代码片段)来组合两个QColor对象?

我会看看现有的颜色选择器(Gimp、Photoshop、Paint等等)。它们中的大多数都处理几种不同的颜色选择方法:

饱和度、色调、值、亮度、对比度、RGB、CMYK、HSV、Alpha/不透明度

Qt可以直接处理这些问题:

为了组合两种颜色,我可能会将它们的不同组成部分平均在一起:

// Rough pseudocode

Color1 RGBA, Color 2 RGBA, Color 3 = combination

Color3.R = (Color1.R + Color2.R)/2
Color3.G = (Color1.G + Color2.G)/2
Color3.B = (Color1.B + Color2.B)/2
Color3.A = (Color1.A + Color2.A)/2
我希望这有帮助


PS:理解也会有帮助。

我在Qt文档中提到XRender扩展时遇到了麻烦。维基百科说它使用了。所以我现在正在读那篇文章。只是平均alpha通道,而不是用它们来加权颜色,看起来就像一般忽略alpha一样好。