UIColor
中的色调与标准RGB色轮不同。我的意思是,色轮上的两个相反的颜色将匹配(即黄色和紫色),但如果你在UIColor
中采用两种相反的颜色,例如:
颜色1:色调0.45
颜色2:色调0.95
他们不匹配。有没有办法通过UIColor
找到频谱中的相反颜色?
答案 0 :(得分: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。这可能是您混淆的根源。红色加黄色等于橙色和颜料,但红色加绿色等于黄色带光。
答案 1 :(得分:1)
我answered a question just like this不久以前。它的要点是有许多不同的颜色模型。即使在您的问题中,您似乎也在考虑两种不同的模型:黄色和紫色可能在红 - 黄 - 蓝模型中互补,但在红 - 绿 - 蓝模型中则不同。