Free Drawing in iOS (Part 1)

预期目标

  1. 跟随手指进行绘图
    限制:线条不包括区域,仅限单指,多指无作为
  2. 支持画板基础操作,如更换笔刷颜色、粗细,可擦除,重置
  3. * 线条需流畅,无明显顿挫感,转角需平滑
  4. * 支持模拟笔锋
  5. * 支持Undo/Redo
  6. ** 支持更换笔刷类型,包括钢笔,毛笔,铅笔等

解决思路

我们会根据以往思路(Winform/WPF)的方式来进行初步绘制,常规动作差不多就是通过TouchBegan/Moved/Ended获得动作将Point追加记录,然后在drawRect中重绘,这个思路和常规的MouseDown/Move/Up+OnPaint/OnRender无差。然后会利用Bitmap来做一次Cache,将点集绘制到Bitmap,然后一次贴到显示区域,用以提升性能。

当手指快速扫过屏幕时,touchesMoved的sample数量会相对比较低,一笔所产生的点相对比较离散,如果直接通过LineTo会产生折线,我们通过老by算法对一笔所产生的点集进行差值,形成比较流畅的线条。

下一步仍旧通过老by算法根据根据速度和点位来模拟笔锋。最后一步我还没想好怎么实现,走一步看一步呗。Let's get it started!

参考资料很丰富:

Creative Commons License
Free Drawing in iOS (Part 1) by nonocast, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 China Mainland License.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>