交换色混合

时间:2016-01-27 03:07:43

标签: math colors

我不确定SO是否是提出这个问题的正确网站,但不能想到任何其他明显更合适的网站。

我目前在列表中有一个带有图标的UI。要(作为概述)指出有关物品的某些状态,我会以某些颜色突出显示它们。为了绘制具有特定高光颜色的项目,我使用以下简单的混合公式:

  • D x = H A H x +(1 - H A )S x
  • D A = S A

其中D是最终(目标)颜色,H是高亮颜色,S是图标的源颜色,下标表示颜色成分,A是alpha,x是R,G和B的范围。单词,我将RGB组件混合到由高亮颜色的alpha值确定的范围,并简单地直接使用源alpha组件输出alpha(为了保留抗锯齿边缘等等)。

尽管如此,但有时候,或许有两三个这样的状态出现在一个项目上。在这种情况下,我只是简单地将所有高亮颜色混合在一起。这个工作足够好,但令我困惑的是,混合公式不是可交换的。换句话说,如果以不同的顺序处理状态,则会产生略微不同的颜色。这真的不是世界末日或其他任何东西,但它仍困扰着我。

从技术上讲,我想我可以在状态上强制执行一些一致的排序,只是为了使组合的高亮颜色每次都相同,但这似乎是一个丑陋的解决方案,特别是因为它之间没有任何自然顺序他们。最后,这让我想到了我的问题:

是否有任何混合公式可以实现一些类似的(当然,不完全相同)视觉效果,但这实际上是可交换的?我无法想到一个,但这显然并不意味着没有一个。

1 个答案:

答案 0 :(得分:2)

它完全是经验性的,但你可以概括一下你现有的技术。如果您有N个亮点,请使用

       (H_A1 H_X1 + ... + H_AN H_XN) + (N - H_A1 - ... H_AN) S_X
D_X = -----------------------------------------------------------
                                  N
D_A = S_A