提高绘图性能(适用于Dudel应用)

时间:2012-04-09 10:17:40

标签: ios performance drawing quartz-graphics drawrect

我需要创建一个小的绘图/绘画应用程序,所以我转向Beginning IPad Development for IPhone Developers: Mastering the IPad SDK By Jack Nutting, Dave Wooldridge, David Mark

非常好。架构很强大。但是,绘图应用程序( Dudel )在性能方面不是很好。目前有两个主要问题(对我而言):

  1. 最重要的是:一段时间后,绘图速度变慢了。原因:每次都为所有路径调用drawRect
  2. 使用铅笔工具绘图不流畅。原因:它使用addLineToPoint:代替(可能是)addQuadCurveToPoint:
  3. 没有橡皮擦控制。但这真的不是一个问题,因为我们可以为绘画选择白色,给人一种橡皮擦的幻觉。但是,如果有更好的实现,我很想知道。
  4. 问题:

    是否有解决这些问题的解决方案,并提供简单但有效的绘图应用程序?

    注意:我也需要撤消/重做功能。

1 个答案:

答案 0 :(得分:1)

让我试着逐一回答你的问题。

  

使用铅笔工具绘图不流畅。原因:它使用的是addLineToPoint:而不是(可能是)addQuadCurveToPoint:。

你说的是真的.IOS设备在定义的间隔内寻找触摸。如果你快速移动手,很可能最终会失去很少的接触点。因此,使用线连接点会导致难看的尖峰。

我们可以通过curve fitting算法平滑曲线。但是,图纸中的一些调整可以带来可衡量的质量改进。 Here就是一个例子。

  

橡皮擦控制

如果您知道背景颜色,可以使用它作为画笔颜色来赋予橡皮擦的感觉。如果您不知道背景,可以使用

CGContextSetBlendMode(context, kCGBlendModeClear);
  

撤消/重做

您可以使用NSUndoManager