【问题标题】:UIColor does not match standard RGB color wheel?UIColor 与标准 RGB 色轮不匹配?
【发布时间】:2011-06-02 00:43:10
【问题描述】:

UIColor 中的色调与标准 RGB 色轮不同。我的意思是,色轮上两种相反的颜色会匹配(即黄色和紫色)​​,但如果你在UIColor 中取两种相反的颜色,例如:

颜色 1:色相 0.45
颜色2:色相0.95

它们不匹配。有没有什么办法可以通过UIColor找到光谱中的反色?

【问题讨论】:

标签: objective-c cocoa-touch ios uicolor hsb


【解决方案1】:

在轮子上彼此相对的颜色通常不称为“匹配”,它们被称为“互补”,例如,如果将它们混合在一起,则会得到白色(如果处理减色,则为黑色,即颜料)。

RGB 并不是真正的颜色“轮子”——它更像是一个立方体形状。但是,HSB 中的色调通常表示为一个角度,从 0˚ 到 360˚,0˚ 为红色,180˚ 为蓝绿色。如果你从你开始的任何地方取一个 180˚ 的值,你会得到补码:红色 0˚/绿松石色 180˚,绿色 120˚/紫色 300˚,等等。在编程时,色调范围通常写为之间的分数0 和 1 包括在内。在那个方案中,你可以做

fmod(val - 0.5, 1.0)

得到补码。

你还没有说你期望什么结果以及你得到什么结果,所以很难特别有帮助,但 0.95 和 0.45 确实是互补的,当我用这些值创建 UIColors 时,我看到了预期的微红色和绿松石色。

计算机屏幕上的颜色与油漆颜色的行为不同,因为在第一种情况下,您是adding wavelengths of light 来获得结果,而在第二种情况下,您是selectively absorbing wavelengths。这可能是你困惑的根源。红加黄等于有颜料的橙,红加绿等于有光的黄。

【讨论】:

  • 我想知道是否有办法获得匹配的颜色。在常规 RGB 色轮中,对面的颜色匹配,但在 HSB 中,相反值的颜色不匹配。
【解决方案2】:

answered a question just like this 不是很久以前。它的要点是有很多不同的颜色模型。即使在您的问题中,您似乎也在考虑两种不同的模型:在红-黄-蓝模型中,黄色和紫色可能是互补的,但在红-绿-蓝模型中则不然。

【讨论】:

    猜你喜欢
    • 2011-08-05
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多