首先,请注意三个数字不能描述颜色,三个数字和颜色空间一起描述。RGB 不是色彩空间,而是所谓的色彩模型。RGB 模型有很多色彩空间。所以 ((1,0,0), sRGB) 是不同于 ((1,0,0), Adobe RGB) 的颜色。您是否知道字符串编码是如何工作的,其中一堆字节本身不是字符串?这很像。这也是相似的,当你想查看组件值时,你有点自找麻烦,因为这是一个搞乱色彩空间处理的机会。
对不起,无法自拔。无论如何,我会像您的原始颜色是((1,0,0),Generic RGB)一样回答这个问题。
NSColor *color = [NSColor colorWithCalibratedRed:1 green:0 blue:0 alpha:1];
NSLog(@"hue! %g saturation! %g brightness! %g, [color hueComponent], [color saturationComponent], [color brightnessComponent]);
另一方面,
NSColor *color = [NSColor colorWithCalibratedHue:h saturation:s brightness:b alpha:1];
NSLog(@"red! %g green! %g blue! %g, [color redComponent], [color greenComponent], [color blueComponent]);
这些 fooComponent 方法不适用于所有颜色,仅适用于两个特定颜色空间中的颜色,请参阅文档。如果您使用上述方法自己创建颜色,您已经知道自己很好。如果您有一种未知来源的颜色,您可以(尝试)将其转换为一个颜色空间,您可以在其中使用这些组件方法与-[NSColor colorUsingColorspaceName:]
.