NSColor:colorWithDeviceRed ...无法在第二台显示器上运行

时间:2011-07-18 13:55:58

标签: objective-c cocoa macos color-space nscolor

为了能够校准显示器,我必须能够以设备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仪表”时,只有在主显示器上显示视图时,才会应用此设备颜色而不进行任何转换。所以只能在显示器上有菜单栏。

如果您将视图放在第二台显示器上,看起来好像发生了从主显示器的RGB到第二显示器的RGB的转换。如果两个显示器的色域之间存在很大差异,则只能看到这个。我有一台配备Eizo ColorEdge CG 245的MacBook Pro。如果你然后放[0 0 1.0],你可能得到[0.2 0.1 1.0]。

任何人都知道如何摆脱这种额外的转换。我认为deviceRGB应该是deviceRGB。为了制作第二台监视器的配置文件,这是必需的。现在我必须将菜单栏移动到第二个监视器,创建配置文件并将其移回。但是对于我们的应用程序,客户需要能够进行验证,这需要经常进行。这里也出现同样的问题。

1 个答案:

答案 0 :(得分:0)

这对我来说听起来像个错误。我建议reporting it

作为一种变通方法,您可以尝试通过调用drawRect:CGContextSetRGBFillColor来实现自定义视图,在该视图中您可以回复CGContextFillRect。 (您可以get the CGContextthe current NSGraphicsContext。)