ios - 提高绘图性能(针对 Dudel 应用程序)

标签 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. 没有橡皮擦控件。但这真的不是问题,因为我们可以选择白色来绘画,给人一种橡皮擦的错觉。但是,如果有更好的实现方式,我很想知道。

问题:

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

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

最佳答案

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

The drawing with Pencil tool isn't smooth. Reason: It's using addLineToPoint: instead of (may be) addQuadCurveToPoint:.

你说的是真的。IOS 设备在定义的时间间隔内查找触摸。如果你的手移动得很快,你很可能最终会失去几个接触点。因此,使用线连接点会导致丑陋的尖峰。

我们可以通过 curve fitting 平滑曲线algorithms.However 绘图中的一些调整可以导致质量的可衡量改进。 Here就是一个例子。

Eraser control

如果您知道背景颜色,您可以将其用作画笔颜色以提供橡皮擦般的感觉。如果你不知道你可以使用的背景

CGContextSetBlendMode(context, kCGBlendModeClear);

Undo/Redo

你可以使用NSUndoManager .

关于ios - 提高绘图性能(针对 Dudel 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071804/

相关文章:

ios - 将 Tabbar 插入 UITabBarController 内的 ViewController 时不会隐藏

java - SQL 请求和循环结果最佳模式

python - Pandas :DataFrame.mean() 非常慢。如何更快地计算列的均值?

actionscript-3 - 绘图游戏 Flash AS3

python - 使用 PIL 的 Imagedraw 创建具有给定厚度的圆弧

android - 在 android 中压印图像形状(使用 EmbossMaskFilter)

ios - 使用多个字符串创建 onDoneBlock

ios - 将UIPasteboard内容粘贴到其他应用程序中

javascript - Instruments:UI Automation:iPhone app - 如何使用 NSRect 参数点击 "null"按钮?

javascript - 在 Javascript 中编写分支代码的最有效方法