针对未绘制的颜色的子像素渲染

时间:2014-04-25 07:36:49

标签: objective-c macos cocoa core-animation

这是this one的后续问题。

CATextLayer只能在不透明时使用子像素抗锯齿来绘制文本。

文本显示在有色图像上。图像用90%的颜色着色,这意味着我基本上可以忽略图像和色调颜色之间的少数色差,以及针对色调的抗锯齿。

现在显然CATextLayer的背景仍然必须是透明的 不幸的是,没有办法真正控制子像素AA,你可以禁用它或启用它,其余的发生在后台。

我想知道是否有办法将反别名设置为实际上不存在的颜色 所以我的问题在一句话中:


是否有办法针对从未绘制的颜色进行亚像素抗锯齿?

1 个答案:

答案 0 :(得分:1)

有一种方法。 (这有点像黑客,但由于还没有答案,一小时后,我认为我应该发布它,虽然它可能不完美。)

将黑色文字渲染到白色背景上并将其保存到图像上。

然后,您可以使用函数kCGBlendModeMultiply以混合模式-drawInRect:blendMode:alpha:渲染该图像。

要绘制其他颜色的文字,您需要更多的图像hackery,但也应该可以创造性地使用混合模式。