qt - 如何将两个 QColor 对象与 Alpha channel 组合在一起?

标签 qt alpha

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

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

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

是否有一种(有用的)方法可以组合两种没有设置 alpha 值的颜色?或者在原始颜色上设置 alpha 值并将其与也设置了 alpha 值的“覆盖颜色”组合更有意义吗?

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

最佳答案

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

关于qt - 如何将两个 QColor 对象与 Alpha channel 组合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12583738/

相关文章:

c++ - 如何在 Qt 信号和槽中使用枚举

c++ - 在 Qt 中迭代复选框

c++ - 如何在macOS终端上执行Qt应用程序?

ffmpeg - 如何在保持透明度的同时修剪 webm 视频

c# - 如何加载 PNG 并导出到 TGA 在 C# 中保持 alpha?

c# - UWP Composition - 将不透明蒙版应用于 ListView 的顶部 30px

c++ - 在 QObject 派生类中重复 Q_DISABLE_COPY

c++ - 使用 C++ 运行 QtWebEngine

C# GDI - 如何检查像素是否不透明?

iphone - tableView 作为半透明 View 中的 subview