Objective c CGContext的静态背景

Objective c CGContext的静态背景,objective-c,ios,core-animation,core-graphics,cgcontext,Objective C,Ios,Core Animation,Core Graphics,Cgcontext,这是我的第一个问题,大家好。我花了一段时间思考下面的问题,但没有找到解决办法。如果有人能给我指出正确的方向,我会很高兴的 我正在使用CGContext绘制实时数据的各种图形表示层,这些数据应以至少50fps的合理帧速率刷新。我想使用静态图像作为背景。使用每个循环的上下文重新绘制此图像会显著降低帧速率。我考虑只使用UIImageView显示一次图像。这里的问题是,我想使用CGContext提供的blendmodes,以实现更复杂的覆盖,而不仅仅是为每个层设置alpha值。由于显示背景图像的UIIm

这是我的第一个问题,大家好。我花了一段时间思考下面的问题,但没有找到解决办法。如果有人能给我指出正确的方向,我会很高兴的


我正在使用CGContext绘制实时数据的各种图形表示层,这些数据应以至少50fps的合理帧速率刷新。我想使用静态图像作为背景。使用每个循环的上下文重新绘制此图像会显著降低帧速率。我考虑只使用UIImageView显示一次图像。这里的问题是,我想使用CGContext提供的blendmodes,以实现更复杂的覆盖,而不仅仅是为每个层设置alpha值。由于显示背景图像的UIImageView不是上下文的一部分,因此它不受blendmodes的影响。有人知道如何在不太影响帧速率的情况下实现所需的行为吗?感谢您的帮助。

使用与CGRect尺寸相同的
CGImageRef
调用
CGContextDrawImage
,速度非常快。设置一个
CGImageRef
,背景图像在代码中的运行频率低于每帧,例如视图的初始化代码。如果此背景图像正在更改,请在程序逻辑代码中生成图像,而不是在绘制刷新代码中生成图像

最糟糕的情况是每次都从文件中访问图像。不从较重的对象中访问
CGImageRef
可以节省一些时间。像
[someUIImageObject CGImage]
这样的调用会增加消息发送的开销,而在包含图形代码的同一对象中访问
CGImageRef
类型ivar则不会增加


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

谢谢您的回复。我从一开始就尝试使用CGImageRef。在此之前,我使用UIImage的drawInRect:它还使用相应的CGImageRef将图像绘制到上下文中。不幸的是,在性能方面没有明显的改进,所以我可能不得不找到另一个解决方案。再次感谢你的帮助。