【发布时间】:2011-07-18 13:55:58
【问题描述】:
为了能够校准显示器,我必须能够以设备 RGB 值驱动它。
为了做到这一点,我通过以下方式创建了一个 NSColor:
[NSColor colorWithDeviceRed:(colorsPtr[cnt]/255.0f) green:(colorsPtr[cnt+1]/255.0f)
blue:(colorsPtr[cnt+2]/255.0f) alpha:1.0]
然后我把这个颜色放在视图上。
[colorView setColor:[colorsForMeasuring objectAtIndex:index]];
当我使用“DigitalColor Meter”时,仅当主显示器上显示视图时才应用此设备颜色而无需任何转换。所以只能在有菜单栏的显示器上。
如果您将视图放在第二台显示器上,看起来好像发生了从主显示器的 RGB 到第二显示器的 RGB 的转换。只有在两个显示器的色域之间存在很大差异时,您才会看到这一点。例如,我有一台配备 Eizo ColorEdge CG 245 的 MacBook Pro。如果你然后输入 [0 0 1.0],你可能会得到类似 [0.2 0.1 1.0] 的东西。
任何人知道如何摆脱这种额外的转换。在我看来,deviceRGB 应该是 deviceRGB。为了为第二台显示器制作配置文件,这是强制性的。现在我必须将菜单栏移动到第二台显示器,创建配置文件并将其移回。但是对于我们的应用程序,客户需要能够进行验证,并且需要经常进行。同样的问题也会出现在这里。
【问题讨论】:
标签: objective-c cocoa macos color-space nscolor