目标c-UIColor与标准RGB色轮不匹配



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

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

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

在一个轮子上相对的颜色通常不被称为"匹配",它们被称为是"互补的",因为如果你把它们混合在一起,你会得到白色(或者如果你处理减色,即颜料)。

RGB并不是一个真正的颜色"轮子",它更像是一个立方体形状。然而,HSB中的色调通常表示为一个角度,从0˚到360˚,红色为0˚,绿松石为180˚。如果你从一开始就取一个值180˚,你就会得到补码:红色0˚/绿松石180˚、绿色120˚/紫色300˚等。编程时,色调范围通常写为0到1之间的分数(包括0和1)。在这个方案中,你可以进行

fmod(val - 0.5, 1.0)

以获得补码。

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

计算机屏幕上的颜色与油漆的颜色表现不同,因为在第一种情况下,你添加了波长的光来获得结果,而在第二种情况中,你选择性地吸收了波长。这可能是你困惑的根源。红加黄等于有颜料的橙色,但红加绿等于有光的黄色。

不久前我回答了一个类似的问题。它的要点是有很多不同的颜色模型。即使在你的问题中,你似乎也在考虑两种不同的型号:黄色和紫色在红黄蓝型号中可能是互补的,但在红绿蓝型号中则不然。

最新更新