混合色彩空间会受到惩罚吗?(核心图形)

ben*_*ado 5 iphone macos core-graphics cgcolorspace

如果我在Mac OS X或iPhone OS上的Core Graphics中编写绘图代码,我可以通过调用以下方法将活动填充颜色设置为红色:

CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0); // RGB(1,0,0)
Run Code Online (Sandbox Code Playgroud)

如果我想要50%灰色,我可以打电话:

CGContextSetRGBFillColor(context, 0.5, 0.5, 0.5, 1.0); // RGB(0.5,0.5,0.5)
Run Code Online (Sandbox Code Playgroud)

但是对于灰色阴影,很容易做出一条较短的线并且打电话:

CGContextSetGrayFillColor(context, 0.5, 1.0);
Run Code Online (Sandbox Code Playgroud)

但是,这个函数不是简单地调用RGB方法,强度值被复制三次; 相反,它正在将上下文的颜色空间从DeviceRGB更改为DeviceGray.下一次调用RGB方法会将其切换回来.

我很想知道:

  • 切换色彩空间的代价是什么?
  • 当您的上下文的颜色空间与设备的原生颜色空间不匹配时,绘制是否会受到惩罚?(即,使用DeviceGray和DeviceRGB绘图)

我要求技术上的好奇心,而不是过早优化的愿望,所以请将你的告诫保持在最低限度.

Nic*_*lis 1

我一直以类似的方式广泛使用两者,并且没有注意到性能方​​面的损失。