【问题标题】:How do I draw multiple CGContextRefs to -drawRect?如何绘制多个 CGContextRef 到 -drawRect?
【发布时间】:2024-01-18 11:34:01
【问题描述】:

我已经保存了一堆 CGContextRefs,我想在我的 UIView 的 drawRect 部分中绘制所有这些。我该怎么做?

【问题讨论】:

    标签: iphone uikit uiview paint cgcontext


    【解决方案1】:

    这是一种方法:

    - (void)drawRect:(CGRect)rect {
        CGImageRef newImg = CGBitmapContextCreateImage(ctx1);
        [[UIImage imageWithCGImage:newImg] drawInRect:rect];
        CGImageRelease(newImg);
        CGImageRef newImg = CGBitmapContextCreateImage(ctx2);
        [[UIImage imageWithCGImage:newImg] drawInRect:rect];
        CGImageRelease(newImg);
    }
    

    【讨论】:

    • 谢谢。我一直在阅读有关图形状态的信息。我只是想保存单个笔触,那么保存和恢复图形状态会是一种更快的方法吗?
    • 我如何在 -drawRect 中绘制结果图像?
    • 就是这样。生成的图像被相互叠加绘制到提供给 drawRect 的矩形中。
    • 您可能想要添加混合模式,或者让图像彼此相邻而不是在顶部绘制,但这就是它的要点。我不确定这是否比绘制单个笔触更快,但它确实允许您在其他时间做一些工作,然后在 drawRect 时间将它们全部转储到屏幕上。还有其他从 CGImageRef 到绘图的路径,不会让你将上下文转回 UIImage,这可能会加快速度。