如果我使用该行:
canvas.drawLine(stx,sty,spx,spy);
我如何稍后用例如MotionEvent
检测线是否被触摸?
让我们假设这条线不直。
我知道有Rect
或RectF
这样的事情可以处理事件,但有些事情我无法绘制斜线。
也许有人可以建议我另一种方法来绘制这条线,以便使用的对象可以处理事件......
经过一夜的研究,似乎要走的路是从Canvas切换到OpenGL ES API。
但是在给了它一秒后,如果有
线(点(x1,y1),点2(x2,y2))
就像一位慈爱的母亲一样,Math
带来了理解和简单的反感软件,我们可以通过简单的代码行确定事件点是否包含在Line
中:
(x2 - x1)(eventY - y1)=(y2 - y1)(eventX - x1);
为了简化模糊触摸区域,我们可以添加:
for(int i = -10; i<10;i++){
for(int j=-10; j<10; j++){
if((x2 - x1)*(eventY+i - y1) == (y2 - y1)* (eventX+j - x1))
return true;}}