NSColor 及其色调分量
我不太明白为什么 NSColor 的色调组件会表现得如此。这里有一些奇怪的事情:
NSColor *c = [NSColor colorWithCalibratedHue:0.1
saturation:1.0
brightness:1.0
alpha:1.0];
CGFloat hue = 0.0;
[c getHue:&hue saturation:NULL brightness:NULL alpha:NULL];
NSLog(@"hue = %f", hue);
如果您运行此代码,您会看到记录“hue = 0.1”。但如果您运行以下代码:
NSColor *c = [NSColor colorWithCalibratedHue:0.0
saturation:1.0
brightness:1.0
alpha:1.0];
CGFloat hue = 0.0;
[c getHue:&hue saturation:NULL brightness:NULL alpha:NULL];
NSLog(@"hue = %f", hue);
您会看到记录了“hue = 1.0”。这是一个错误吗?我阅读了大量有关色彩空间和颜色的文档,但找不到答案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在颜色理论中,色调是角度单位,通常用 模 360(
0°
与360° 相同)。
NSColor
将0°
映射到浮点值0.0
,将360°
映射到1.0
。因此,getHue
返回1.0
而不是0.0
是完全有效的,因为这两个值代表相同的色调。In color theory, hue is an angular unit, usually expressed in degrees modulo 360 (
0°
being the same as360°
).NSColor
maps0°
to the floating point value0.0
and360°
to1.0
. Therefore, it's perfectly valid forgetHue
to return1.0
instead of0.0
, because both values represent the same hue.