色调UIColor
与标准 RGB 色轮不同。我的意思是,色轮上的两种相反颜色将匹配(即黄色和紫色),但如果您在 中采用两种相反的颜色UIColor
,例如:
颜色 1:色相 0.45
颜色 2:色相 0.95
他们不匹配。有没有办法通过 找到光谱中的相反颜色UIColor
?
色调UIColor
与标准 RGB 色轮不同。我的意思是,色轮上的两种相反颜色将匹配(即黄色和紫色),但如果您在 中采用两种相反的颜色UIColor
,例如:
颜色 1:色相 0.45
颜色 2:色相 0.95
他们不匹配。有没有办法通过 找到光谱中的相反颜色UIColor
?
在轮子上彼此相对的颜色通常不称为“匹配”,它们被称为“互补”,例如,如果将它们混合在一起,则会得到白色(如果处理减色,即颜料,则为黑色)。
RGB 并不是真正的颜色“轮子”——它更像是一个立方体形状。然而, HSB中的色调通常表示为一个角度,从 0° 到 360°,红色为 0°,绿松石色为 180°。如果你从你开始的任何地方取一个 180˚ 的值,你会得到补码:红色 0˚/绿松石色 180˚,绿色 120˚/紫色 300˚ 等。在编程时,色调范围通常写为之间的分数0 和 1 包括在内。在那个方案中,你可以做
fmod(val - 0.5, 1.0)
得到补码。
你还没有说你期望什么结果和你得到什么结果,所以很难特别有帮助,但是 0.95 和 0.45 确实是互补的,当我UIColor
用这些值创建 s 时,我看到了预期的偏红和绿松石色的色调。
计算机屏幕上的颜色与油漆颜色的表现不同,因为在第一种情况下,您正在添加光的波长以获得结果,而在第二种情况下,您正在选择性地吸收波长。这可能是你困惑的根源。红色加黄色等于带有颜料的橙色,而红色加绿色等于带有光的黄色。
不久前,我回答了一个这样的问题。它的要点是有很多不同的颜色模型。即使在您的问题中,您似乎也在考虑两种不同的模型:在红-黄-蓝模型中,黄色和紫色可能是互补的,但在红-绿-蓝模型中则不然。