alo*_*loo 6 iphone drawing quartz-graphics uikit
我正在编写一个使用手指绘制简单图表的应用程序.我大部分都在工作,但现在我正在努力优化其性能.当用户快速滑动手指时,我无法捕获足够的触摸事件来绘制平滑的路径.
这是我目前的做法:
1)我将UIView子类化并向CGLayer添加了一个poroperty(懒得创建并且与我的UIView大小相同).2)我的UIView子类通过在实例变量中存储当前和最后的触摸点来响应触摸事件.3)调用我的视图的setNeedsDisplay并在绘制矩形中执行以下操作: - 从上一个触摸位置绘制一条线到当前触摸位置到CGLayer - 一次性将整个CGLayer绘制到我的视图上下文中
主要问题是当用户快速滑动时我得到相对较少的触摸事件,因此我在触摸之间绘制的线条很长并且使得路径看起来锯齿状不平滑.
我的问题:
1)我的UIView子类上的drawRect(在我的UIView子类上)和我的触摸事件处理程序是否在同一个线程中被调用?即我可以执行线程(一个在触摸事件中,第二个在我的绘制矩形)?
如果没有 - 在调用drawRect时,触摸事件是否排队?如何提高性能 - 只需提高drawRect的性能?
如果是 - 我怎样才能让更多的触摸事件发生,这样我才能画出更平滑的路径?
谢谢.
另一种方法是在样本点之间插入曲线。当手指开始拖动时,开始收集样本点。随着点数的增加,重新绘制线条。用两个点画一条直线,用三个或更多点画一条曲线。当对位于定义距离内的两个点进行采样时,您可以重新启动该过程。这将允许您在一个动作中绘制两条弧(如“m”) - 当您改变方向时,您会自然地在中间暂停,可能足够长以容纳两个或更多样本。
| 归档时间: |
|
| 查看次数: |
13597 次 |
| 最近记录: |