选择画布

时间:2018-04-24 12:45:44

标签: java android canvas touch line

我通过阅读Line对象列表在画布上画线,这些对象基本上只是x1,y1,x2和y2。

由于MatrixGestureDetector,图片可以缩放和滚动,但现在我希望能够选择"单击一行。通过选择我的意思是将其突出显示并存储在选定的行列表中或在行的属性中具有Boolean

我设法检测到点击的坐标,并根据比例因子和平移计算相对坐标。我将点击的坐标与所有线条的坐标进行了比较,如果点击在线条上则会变宽。

问题是你必须如此精确才能选择一个没有缩放的地狱,如果两条线太近它们都会被选中。我怎么能只选择最近的一条线(在一定的距离内)在我的点击周围)?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你可以尝试一些简单的数学,让我们说你有3分 A B和C

B和C是您的细分,A是点击的位置

B(x1,y1)和A(x2,y2)之间的距离是sqrt((x1-x2)^ 2 +(y1-y2)^ 2)让我们称之为distBA

C(x1,x2)和A(x2,y2)之间的距离再次是sqrt((x1-x2)^ 2 +(y1-y2)^ 2)我们称它为distCA

现在我们需要另一个变量masterDistance = distBA + distCA

现在你遍历所有的行并记住masterDistance值最小的那行,它应该是你最近的行。

您还可以验证它是否小于某个值,这样就可以避免出现两条线的情况,一条位于屏幕顶部,一条位于底部,用户点击中间位置。如果没有此验证,即使点击不在任何一条线附近,仍然会选择一条线。