gpt4 book ai didi

ios - 在 iPad 3 上渲染手绘上下文的最佳实践

转载 作者:行者123 更新时间:2023-12-01 18:23:59 25 4
gpt4 key购买 nike

我目前有一个免费的手绘 iPad 应用程序,它通过 touches 方法中的四边形曲线将线条添加到可变路径,然后在新区域上调用 setNeedsDisplayInRect。

问题是当绘图(路径)变得相当大时,重绘需要更长的时间,并开始陷入困境。以及每当用户更改画笔大小或颜色时,它都会将其应用于重绘时先前绘制的路径的重叠部分。

为了解决这个问题,我在 touchesEnded 的后台线程中调用 renderInContext,并将它与绘图 View 后面的 imageview 中的另一个 UIImage 合并。然后清除绘图 View 。

这也有帮助,因此当用户点击保存时,绘图通常已经呈现在单个 UIImage 中 - 准备就绪。

这在其他设备上运行良好,但在 iPad 3 视网膜显示屏上,性能非常糟糕,并且当用户在快速绘图时多次抬起手指时往往会崩溃。

我正在寻求有关处理此类情况的最佳实践的任何类型的建议?除了添加额外的 View 以在后台渲染以防止主线程和后台线程一次访问相同的 View - 这听起来相当 hack-ish - 我觉得我正在打败一匹死马?

最佳答案

在我当前的应用程序中,我做了一个在 iPad 2 和 3 上都能正常工作的工作实现,无论路径长度或路径数量如何。似乎显卡更擅长绘制大量小路径而不是一些大路径,并且任何一个都比将图像渲染到上下文中更快。所以,我所做的就是即使用户不断地绘制,我也会将路径分成许多较小的路径并将它们添加到数组中。这种方法给了我一个优点和一个缺点。

优点:清晰地缩放和重绘图像的能力
缺点:无法进行像素完美删除

至于多种颜色,我创建了 UIBezierPath 的子类包括颜色属性。由于颜色现在可以通过 NSCoding 进行序列化,它们很容易保存。此外,我还有一个“笔划”对象,它包含用户在一个连续笔划中创建的所有路径。这样我就可以正确处理撤消/重做。

希望这些信息有所帮助。

关于ios - 在 iPad 3 上渲染手绘上下文的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15149451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com