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

最佳答案

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

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

关于objective-c - NSColor及其色相组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6888363/

10-09 02:40