gpt4 book ai didi

macos - NSColor 在屏幕上显示不同的颜色

转载 作者:行者123 更新时间:2023-12-03 17:40:44 25 4
gpt4 key购买 nike

我扩展 NSColor 以添加类方法

+ (NSColor*) initWithHTMLString: (NSString*) rgb

我设置 NSWindow 对象的背景颜色:

[self.window setBackgroundColor:[NSColor initWithHTMLString:@"37854F"]]
NSLog(@"Color=%@",[self.window.backgroundColor toHTMLRGB]);

当我运行程序时,日志行是“Color=37854F”。但是,我使用PixelStick工具删除颜色像素,像素颜色不是37854F,颜色分量比其原点小一点。

有人知道解决办法吗?

最佳答案

造成差异的原因是使用 obj-c 创建的颜色经过调整以考虑当前颜色配置文件(请参阅系统首选项 -> 监视器 -> 颜色)。到目前为止,当您有多个显示器并将正在运行的应用程序从一台显示器拖动到另一台显示器时,相同的颜色会出现不同的情况。不幸的是,即使您使用 colorWithDeviceRed:Green:Blue:Alpha 代替 colorWithCalibrateRed:Green:Blue:Alpha,在特定显示器上使用精确的颜色也是极其困难的。

颜色感知是一个复杂的问题,各种输出设备都发挥着重要作用,因此没有 1:1 映射也就不足为奇了。但实际上应该可以创建一种颜色(例如在绘画应用程序或颜色管理应用程序、设计师应用程序等中)并在 Cocoa 中重新创建完全相同的颜色,如果两者都在同一台显示器上运行的话。

值得注意的是:当您在 OSX 上的设计中使用颜色(无论是浏览器中的图像还是 PDF 文件或其他文件)并在虚拟机中的 Windows 应用程序中使用其组件值时(例如在 Parallels 中)桌面)您可以重现任何屏幕颜色选择器显示的确切颜色。

[更新]:由于将系统颜色配置文件设置为通用颜色配置文件可以解决颜色匹配问题,因此可能值得考虑在代码中创建自己的通用颜色空间,如technical Q&A中所述。

[更新]:我刚刚发现了另一条 NSColor 消息,看起来正是我们都在寻找的内容:

NSColor colorWithSRGBRed:green:blue:alpha

在一些测试中我可以看到颜色是准确的。不幸的是,此消息仅在 10.7 及更高版本上可用。

关于macos - NSColor 在屏幕上显示不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15939200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com