CGContext的静态背景

这是我的第一个问题,所以大家好。 我花了一些时间来思考以下问题,不能提出解决scheme。 如果有人能指出我正确的方向,我会很高兴。

我使用CGContext来绘制各种图层的实时数据表示图层,应该以至less50fps的合理帧率刷新。 我想使用静态图像作为背景。 使用每个周期的上下文重新绘制此图像会显着降低帧速率。 我想过使用UIImageView来显示图像一次。 这里的问题是,我想要使用CGContext提供的blendmodes来实现更复杂的覆盖,而不仅仅是为每个图层设置一个alpha值。 由于显示背景图像的UIImageView不是上下文的一部分,因此不受混合模式的影响。 有没有人有一个想法如何实现所需的行为,而不会影响帧率太多? 谢谢你的帮助。

使用与CGImageRef具有相同大小尺寸的CGImageRef调用CGContextDrawImage速度很快。 用代码中的背景图像来设置一个CGImageRef ,它的运行次数比每一帧都less,比如视图的初始化代码。 如果此背景图像正在更改,请在程序逻辑代码中构build图像,而不是绘制刷新代码。

你可以做的最糟糕的事情是每次都从一个文件中访问图像。 一些时间可以通过不从一个较重的对象访问CGImageRef保存。 诸如[someUIImageObject CGImage]调用将增加消息发送的开销,而在包含绘图代码的相同对象中访问CGImageReftypes的CGImageRef则不会。

如果您的源图像大小不正确,请首先将其以所需的大小绘制到CGImageRef中,然后在绘图代码中重新使用它。