使用Snow Leopard,默认伽玛值从1.8变为2.2。我碰巧正在研究一些使用Cocoa提供的非常暗的自定义配色方案的Mac应用程序。在10.5它看起来很好,但在新的伽玛10.6,它更黑暗,真的很难看。
使用主题类中的众多[NSColor colorWithCalibratedRed:green:blue:alpha:]
对象定义颜色方案。
有没有办法'转换'NSColor
对象,使其在10.6上显示与在10.5上完全一样?
我知道这可以在“系统偏好设置”中全局实现,但这不是我追求的目标。
答案 0 :(得分:0)
最好的办法是存储颜色看起来不错的显示器的颜色配置文件。
然后,使用当前使用的显示器的颜色配置文件来转换颜色。
基本上,你将拥有的是:
(带原始配置文件的原始颜色)转换为(带有当前颜色配置文件的新颜色)。
您将始终拥有四个项目中的三个 - 您只需要计算新颜色。
有关更多信息,我建议阅读:
http://developer.apple.com/mac/library/documentation/cocoa/conceptual/DrawColor/DrawColor.html
答案 1 :(得分:0)
我唯一真正的问题是暗色渐变。 10.4仍然是一个有效的目标,所以我一直在使用我自己的基于CGShading对象的渐变包装类一段时间(NSGradient只有10.5+)。
基于以下公式的简单非线性校正曲线可以提供帮助:
colour_component = pow(colour_component, 1.0/1.19);
可以调整1.19值以创建不同的校正曲线。
如果在运行时检测到10.6(使用Gestalt),则在计算梯度之前,曲线将应用于开始和结束颜色的每个红色,绿色和蓝色分量。我没有触及alpha值。
我还添加了一个方便的用户首选项来打开和关闭它。