存储触摸动作创建的曲线点的最佳方法是什么?

时间:2014-04-02 14:10:05

标签: android bezier

我们正在创建一个应用程序,其中必须根据触摸事件绘制线条(曲线),但我们还需要存储与特定线条对应的点。

Android.Graphics.Path在我们拖动手指时给了我们非常好的流畅线条。但是,似乎无论如何都不能从Path对象访问这些点。

我们现在所做的基本上是连接线,因为一个人拖动他们的手指(使用y = mx + b)。因此,如果最后识别的触摸位置是0,0然后它们超过我们的阈值到(4,4),我们调用一个函数从连接这两个的线((0,0),(1,1), (2,2),(3,3),(4,4))。我们将这些点添加到ArrayList。

这给了我们一些不稳定的曲线(显然我们使用的是y = mx + b),但更重要的是,在绘制了几行后,它会大大减慢我们的程序。

是否有更好的方法来生成跟随用户滑动动作的曲线点?或者更好的存储方式?路径似乎做得很好,是否有任何理由隐藏实际点?

谢谢!

2 个答案:

答案 0 :(得分:1)

实现平滑的一种方法是使用Path类'方法quadTo。

  

quadTo(float x1,float y1,float x2,float y2)添加二次贝塞尔曲线   从最后一点开始,接近控制点(x1,y1),结束于   (X2,Y2)。

答案 1 :(得分:0)

Bezier曲线是您想要解决此问题的方法。您应该能够检测到用户手指方向的变化,并停止当前曲线并在该点开始新曲线。你真的不想存储路径上的每个点,因为我可以让我的手指在屏幕上停留并堵塞数据结构。