如果我在 Mac OS X 或 iPhone OS 上的 Core Graphics 中编写绘图代码,我可以通过调用将活动填充颜色设置为红色:
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0); // RGB(1,0,0)
如果我想要 50% 的灰色,我可以调用:
CGContextSetRGBFillColor(context, 0.5, 0.5, 0.5, 1.0); // RGB(0.5,0.5,0.5)
但是对于灰色阴影,很容易制作一条较短的线并调用:
CGContextSetGrayFillColor(context, 0.5, 1.0);
然而,这个函数并不是简单地调用RGB方法,强度值被复制了3次;相反,它将上下文的颜色空间从 DeviceRGB 更改为 DeviceGray。下一次调用 RGB 方法会将其切换回来。
我很想知道:
- 切换色彩空间的惩罚是什么?
- 当您的上下文的色彩空间与您设备的本机色彩空间不匹配时,绘图会受到惩罚吗?(即,在 DeviceGray 与 DeviceRGB 中绘图)
我是出于对技术的好奇,而不是过早优化的愿望,所以请尽量减少您的警告。