NSColor,10.6和Gamma 2.2

Ste*_*orn 6 macos cocoa objective-c

使用Snow Leopard时,默认伽马值从1.8变为2.2.我碰巧正在研究一些使用Cocoa提供的非常暗的自定义配色方案的Mac应用程序.在10.5它看起来很好,但在新的伽玛10.6,它更黑暗,真的很难在眼睛上.

使用[NSColor colorWithCalibratedRed:green:blue:alpha:]主题类中的众多对象来定义颜色方案.

有没有办法'转换'一个NSColor对象,以便它在10.5上显示与在10.5上完全一样?

我知道这可以在系统偏好设备中全局实现,但这不是我想要的.

Ste*_*orn 0

我遇到的唯一真正的问题是深色渐变。10.4 仍然是一个有效的目标,所以我已经使用自己的基于 CGShading 对象的渐变包装类有一段时间了(NSGradient 仅是 10.5+)。

基于以下公式的简单非线性校正曲线可以提供帮助:

colour_component = pow(colour_component, 1.0/1.19);
Run Code Online (Sandbox Code Playgroud)

可以调整 1.19 值以创建不同的校正曲线。

如果在运行时(使用 Gestalt)检测到 10.6,则在计算渐变之前,曲线将应用于起始颜色和结束颜色的每个红色、绿色和蓝色分量。我没有改变 alpha 值。

我还添加了一个方便的用户首选项来打开和关闭此功能。