0

对于需要在 Windows 和 OSX 上运行的应用程序,我处于一个令人羡慕的位置,即使用庞大的既定代码库。我目前正在处理的部分包含一些用于吸管/颜色选择器工具的遗留代码。不幸的是,我没有太多为 Mac 开发的经验,所以我希望有人能对我的问题有所了解。

在某些情况下,吸管颜色略有错误,我将问题追溯到通过调用 CGColorSpaceCreateWithName( kCGColorSpaceGenericRGB ) 设置的预期 CGColorSpaceRef 与主显示配置文件设置的实际颜色空间之间的差异。将操作系统显示配置文件设置为通用 RGB 可以消除差异,但无论显示配置文件是什么,我都希望吸管能够获得一致的颜色。

检索主显示器显示配置文件并使用它而不是通用 RGB 配置文件可以确保吸管工具获得一致的值吗?我找到了 CGColorSpaceCreateWithPlatformColorSpace(...) 函数,但根据文档,它自 OSX 10.6 以来已被弃用。目前在 Quartz 中处理这个问题的方法是什么?

我对此感到有些拘束,因为我没有权力或专业知识来进行重大更改,例如添加对其他框架的依赖项。

4

1 回答 1

0

NSColor 有这个功能:

-(void)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha

这将返回从与设备相关的色彩空间转换而来的 RGB 分量。

取自Radiant Color Picker的示例

CGFloat red, green, blue, a;
NSColor *colorAsRGB = [_color colorUsingColorSpaceName:NSDeviceRGBColorSpace];
[colorAsRGB getRed:&red green:&green blue:&blue alpha:&a];

相关链接:

NSColor

使用色彩空间

于 2013-04-04T18:43:16.840 回答