gpt4 book ai didi

iphone - 为 iPhone SDK 优化绘图(用手指触摸)应用程序

转载 作者:行者123 更新时间:2023-12-03 18:43:51 24 4
gpt4 key购买 nike

我正在编写一个使用手指绘制简单图表的应用程序。我让它在大部分情况下都能工作,但现在我正在尝试优化它的性能。当用户快速滑动手指时,我无法捕获足够的触摸事件来绘制平滑的路径。

这是我当前的方法:

1) 我对 UIView 进行了子类化,并向 CGLayer 添加了一个 poroperty(延迟创建,并且与我的 UIView 大小相同)。2)我的 UIView 子类通过将当前和最后一个触摸点存储在实例变量中来响应触摸事件。3)调用我的 View 的 setNeedsDisplay 并在绘制矩形中执行以下操作:- 从上一个触摸位置到当前触摸位置到CGLayer绘制一条线- 一次性将整个 CGLayer 绘制到我的 View 上下文

主要问题是,当用户快速滑动时,我得到的触摸事件相对较少,因此我在触摸之间绘制的线条很长,使路径看起来参差不齐,不平滑。

我的问题:

1)drawRect(在我的 UIView 子类上)和我的 UIView 子类上的触摸事件处理程序是否在同一线程中调用? IE。我是否必须执行线程(一个在触摸事件中,第二个在我的绘图矩形中)?

如果没有 - 调用drawRect时触摸事件是否会排队?我怎样才能提高性能——简单地提高drawRect的性能?

如果是 - 我怎样才能发生更多的触摸事件,以便我可以绘制更平滑的路径?

谢谢。

最佳答案

另一种方法是在样本点之间插入曲线。当手指开始拖动时,开始收集样本点。随着点数的增加,重新绘制线条。用两个点画一条直线,用三个或更多点画一条曲线。当对位于定义距离内的两个点进行采样时,您可以重新启动该过程。这将允许您在一个 Action 中绘制两条弧线(如“m”) - 当您改变方向时,您会自然地在中间暂停,可能足够长以容纳两个或更多样本。

关于iphone - 为 iPhone SDK 优化绘图(用手指触摸)应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1123306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com