对于Snow Leopard,默认gamma从1.8更改为2.2。我碰巧正在开发一些Mac应用程序,它们使用Cocoa提供的非常暗的自定义配色方案。在10.5版本中,它看起来很好,但在10.6版本中,使用新的gamma时,它会变得更暗,对眼睛来说真的很难。
配色方案是使用主题类中的大量[NSColor colorWithCalibratedRed:green:blue:alpha:]对象定义的。
有没有办法“转换”一个NSColor对象,让它在10.6上完全像在10.5上一样显示?
我知道这可以通过系统首选项在全球范围内实现,但这不是我想要的。
发布于 2010-05-15 03:02:46
我唯一真正的问题是深色渐变。10.4仍然是一个有效的目标,所以我使用自己的基于CGShading对象的渐变包装类已经有一段时间了(NSGradient只有10.5+ )。
基于以下公式的简单非线性校正曲线可以提供帮助:
colour_component = pow(colour_component, 1.0/1.19);可以调整1.19值以创建不同的校正曲线。
如果在运行时检测到10.6 (使用Gestalt),则在计算渐变之前,将曲线应用于开始颜色和结束颜色的每个红色、绿色和蓝色分量。我保留了alpha值不变。
我还添加了一个方便的用户首选项来打开和关闭它。
发布于 2010-05-11 22:18:48
最好的做法是存储颜色看起来很好的显示器的颜色配置文件。
然后,使用当前使用的显示器的颜色配置文件来转换颜色。
基本上,您将拥有以下内容:
(具有原始配置文件的原始颜色)转换为(具有当前颜色配置文件的新颜色)。
您将始终拥有四个项目中的三个-您只需要计算新颜色。
有关更多信息,我建议阅读:
http://developer.apple.com/mac/library/documentation/cocoa/conceptual/DrawColor/DrawColor.html
https://stackoverflow.com/questions/2807288
复制相似问题