如何将两个QColor对象与alpha通道组合?

时间:2012-09-25 13:12:56

标签: qt alpha

我的对象已经确定了边框颜色。

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

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

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

是否有一个函数(或者其他人可以提供一个简短的代码片段)来组合两个QColor对象?

1 个答案:

答案 0 :(得分:2)

我会看看现有的颜色选择器(Gimp,Photoshop,Paint,wwWidgets)。他们中的大多数都采用了几种不同的颜色选择方式:

饱和度,色相,数值,亮度,对比度,RGB,CMYK,HSV,Alpha /不透明度。

Qt开箱即用处理这些问题:

QColor

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

// 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:了解Color Space也很有帮助。