我有一些对象,其边框颜色已经确定。
现在我希望用户至少能够设置填充图案的不透明度。例如,边框是蓝色的。用户将不透明度设置为 128,因此填充图案也以蓝色绘制,但半透明。
下一步是允许用户稍微调整图案的颜色。例如:“使用边框颜色,但使其半透明(alpha = 128)并且有点黄。”。
是否有一种(有用的)方法可以组合两种没有设置 alpha 值的颜色?或者在原始颜色上设置 alpha 值并将其与也设置了 alpha 值的“覆盖颜色”组合更有意义吗?
是否有一个函数(或者其他人可以提供一个简短的代码片段)来组合两个 QColor 对象?
最佳答案
我会查看现有的颜色选择器(Gimp、Photoshop、Paint、wwWidgets)。其中大多数都涉及几种不同的选择颜色的方法:
饱和度、色调、明度、亮度、对比度、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:理解Color Space也可能有帮助。
关于qt - 如何将两个 QColor 对象与 Alpha channel 组合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12583738/