首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自WWDC2012的ios iPaint

来自WWDC2012的ios iPaint
EN

Stack Overflow用户
提问于 2012-09-11 19:29:01
回答 2查看 807关注 0票数 2

在Apples 2012的视频会议506上,他们展示了一款为高性能绘图而设计的绘画应用程序(因此帧率永远不会低于30)。

我试图复制代码,但在多个点上卡住了。

我正在寻找的是一个基本的绘图应用程序(线,正方形,圆,贝塞尔曲线路径),即使在数百条线已经被绘制后表现良好。

基本方法是在绘制了一定数量的线条(或圆圈或路径等)后将其保存到图像中,然后只刷新新图形,因此不必重新绘制所有已经绘制的线条。

但不知何故,我从来没有达到更高的表现。我需要如何实现它?我需要多层吗?我如何管理视图中的所有层都被重绘,而只是某个子层被重绘?

如果有人能为我提供一个在图层上绘制几条线的简短示例,然后将该图层保存为图像,然后在其上绘制,我将非常感谢。

感谢您帮助我们重新创建iPaint应用程序,遗憾的是,该应用程序无法从苹果下载。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-11 20:40:21

这只是拼图的一半。另一半是只刷新视图的最小可能区域(通过setNeedsDisplayInRect:)。然而,我已经通过Core Graphics经历了许多不同的绘图方式。缓存很好,但我不再使用它了。我像上面一样设置了更新矩形,然后在我描边之前测试每条路径(测试很快,描边很慢)。如果它在更新框内,我会点击它,否则我会忽略它。

票数 1
EN

Stack Overflow用户

发布于 2012-09-11 19:37:08

我没有看那次会议,但是传统的Quartz加速是使用CGLayers (而不是CALayers)。您可以将CGLayer视为缓存的图形,它可能是位图,也可能不是位图(系统决定如何最好地缓存它)。如果你有一个背景位图上下文,你可以使用它作为你的“图像”,并在你认为合适的时候将CGLayers绘制到其中(然后丢弃这些层)。阅读CGLayer (在Quartz文档中),然后看看这是否是他们在那次会议中谈论的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12368710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档