NSColor及其色调成分

时间:2011-07-31 08:28:41

标签: objective-c cocoa nscolor hue

我不太明白为什么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”被记录。这是一个错误吗?我一般都阅读了很多关于色彩空间和色彩的文档,但找不到答案。

1 个答案:

答案 0 :(得分:5)

在色彩理论中,hueangular unit,通常用degrees modulo 360表示(360°相同)

NSColor映射到浮点值0.0360°1.0。因此,getHue返回1.0而不是0.0完全有效,因为两个值都代表相同的色调。