【问题标题】:How to combine two QColor objects with alpha channel?如何将两个 QColor 对象与 alpha 通道结合起来?
【发布时间】:2012-09-25 13:12:55
【问题描述】:

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

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

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

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

是否有一个函数(或者其他人可以给出一个短代码 sn-p)来组合两个 QColor 对象?

【问题讨论】:

标签: qt alpha


【解决方案1】:

我会查看现有的颜色选择器(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 也会有所帮助。

【讨论】:

  • 只是平均 alpha 通道而不是用它们加权颜色似乎与一般忽略 alpha 一样好。
猜你喜欢
  • 2021-09-05
  • 2021-06-03
  • 2010-09-25
  • 2012-05-17
  • 2021-09-28
  • 2015-04-11
  • 2020-09-26
  • 1970-01-01
相关资源
最近更新 更多