2

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

4

1 回答 1

5

在色彩理论中,色调是一个角度单位,通常以度数 360 表示(与 相同360°)。

NSColor映射到浮点值0.0和. 因此,返回而不是返回是完全有效的,因为这两个值代表相同的色调。360°1.0getHue1.00.0

于 2011-07-31T08:37:04.333 回答