在核心Graphics中,我希望能够在不必每次重绘整个图像的情况下为UIView 绘制更新。初始图像是从CGImageRef中绘制的:
CGImageRef image = CGBitmapContextCreateImage(ctxImage);
CGContextDrawImage(context, _screenRect, image);
最初,我将新部分添加到屏幕外的上下文中,其中包含完整的图像'然后在重新绘制之前从中创建一个新的CGImageRef。
CGContextDrawImage(tmp_Context,targetRect,_section);
CGImageRef image = CGBitmapContextCreateImage(tmp_Context);
CGContextDrawImage(context, _screenRect, image);
这个问题是,在每次帧更新中,我需要将整个图像重绘到屏幕上,而不是仅以某种方式叠加这些部分。如果可能的话,这会产生很大的性能提升,但不确定如何去做。可能与CGLayer?
编辑:我一直在尝试快速更新for循环中的视图,因为我收到的小部分,问题是drawRect没有被调用来做任何更新可能是因为for循环过快而持续打断以前的电话?
drawLayer = CGLayerCreateWithContext(ctxImage, targetRect.size, nil);
layerContext = CGLayerGetContext(drawLayer);
CGContextDrawImage(layerContext,targetRect,ipegSection);
CGContextDrawLayerAtPoint(currentScreen, targetRect.origin, drawLayer);
// Update the UI
[targetView setNeedsDisplay];
答案 0 :(得分:0)
你不能做(?):
CGContextDrawImage(context, targetRect, _section);
像这样你只在当前上下文中绘制你的部分,而不是在另一个上下文中绘制它然后完全重绘屏幕。