【发布时间】:2020-11-18 04:55:23
【问题描述】:
下面是两个渐变。
在渐变 A 中,颜色在线性颜色空间中从红色插值到绿色。即“伽玛校正”。
梯度 B 是在 macOS 上使用 NSGradient 在 Objective-C 中绘制的。 macOS 似乎在屏幕颜色空间(sRGB 或类似)中插入渐变的颜色。这种渐变的问题在于中点的颜色很暗而且“浑浊”。
在 macOS 上,使用 Quartz 或 Cocoa 在两种颜色之间绘制渐变,是否可以指定计算渐变的颜色空间,以在图像上实现更均匀的亮度,例如“渐变 A”?
(该应用程序是一个跨平台的绘图框架,希望颜色在 Windows、macOS 和 IOS 中呈现一致)。
【问题讨论】:
-
参见[NSGradient 的文档]),找到“colorspace”。你试过
init(colors:atLocations:colorSpace:)吗? -
啊,指定 colorSpace:genericRGBColorSpace 确实会改变渐变。结果介于图中的两个渐变之间,但绝对是一种改进。想正式回答问题?