我不太明白为什么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);
您看到“色调= 1.0”正在记录。这是错误吗?我阅读了很多关于“色彩空间”和“色彩”的文档,但找不到答案。
最佳答案
在色彩理论中,hue是angular unit,通常用degrees modulo 360表示(0°
与360°
相同)。NSColor
将0°
映射到浮点值0.0
,将360°
映射到1.0
。因此,getHue
返回1.0
而不是0.0
是完全有效的,因为两个值表示相同的色相。
关于objective-c - NSColor及其色相组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6888363/