首先,请注意,三个数字不描述颜色,三个数字连同一个颜色空间。 RGB不是一个色彩空间,它就是所谓的色彩模型。 RGB模型有很多颜色空间。因此((1,0,0),sRGB)与((1,0,0),Adobe RGB)颜色不同。你知道字符串编码是如何工作的吗?一堆字节本身不是一个字符串?这很像。这也是类似的,因为无论何时您想查看组件值,都会遇到麻烦,因为这是搞乱色彩空间处理的机会。
对不起,不能帮助自己。无论如何,我会回答这个问题,就好像你的原始颜色是((1,0,0),通用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:]
。
来源
2010-04-07 08:56:46
Ken
啊,真好。 :)感谢很多人。我假设整个Adobe RGB和sRGB不会是一个大问题,因为iPhone使用了特定的颜色类型? – 2010-04-07 09:12:29