2011-06-02 138 views
-1

色相在UIColor是不一样的标准RGB色轮。我的意思是,在色轮两个对立的颜色将匹配(即,黄,紫),但是如果你把两个对立的颜色UIColor,例如:UIColor与标准RGB色轮不符?

颜色1:色调0.45
颜色2 :色调0.95

它们不匹配。有没有办法通过UIColor找到光谱中相反的颜色?

+3

可能的[在UIColor和标准色轮中的色调]的副本(http://stackoverflow.com/questions/5663230/hue-in-uicolor-and-standard-color-wheels) – Caleb 2011-06-02 01:47:23

回答

6

彼此相对的轮子上的颜色并不是通常所说的“匹配”,他们被称为“互补”,如,如果混合在一起他们,你得到的白色(或黑色,如果你正在处理减色,即,颜料)。

RGB是不是一个真正的颜色“轮子” - 这更像是一个立方体形状。然而,色调HSB,通常表示为从0˚到360˚的角度,红色在0˚,绿松石在180˚。如果你把一个值从180˚不管你下手,你会得到补充:红0˚/180˚绿松石,绿色120˚/300˚紫等编程时,色调范围通常被写成之间的分数0和1。在该方案中,你可以做

fmod(val - 0.5, 1.0) 

得到补充。

你还没有说出你期望得到的结果和你得到的结果,所以很难有专门的帮助,但0.95和0.45确实是互补的,当我用这些值创建UIColor时,我看到预期的红色和绿松石色调。

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

+0

是的,肯定读了一下在色彩空间! – Wevah 2011-06-02 02:40:22

+0

我想知道是否有一种方法可以得到与之匹配的颜色。在常规的RGB色轮中,相反一侧的颜色相匹配,但在HSB中,相反的颜色不匹配。 – Andrew 2011-06-02 02:51:38

1

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