在我的应用程序中,用户可以使用“笔”工具绘制形状,就像在 Photoshop 中一样。坐标存储在点数组中,并由它们构成路径。路径是绘制在Canvas
.
我希望能够检测用户是否点击了形状,但我不知道如何开始。如果它是常规形状,例如rectangle
,我可以创建一个区域并使用它,但它们的路径可以包含许多点并且可以是任何形状。
谢谢你的帮助...
感谢这个网站http://alienryderflex.com/polygon/找到了解决方案
然后我编辑它以使用 Android 和 java。如果有人感兴趣,这是解决方案(与原始解决方案非常相似):
public boolean clicked(MotionEvent e) {
int j = points.size() -1 ;
boolean oddNodes = false;
for (int i = 0; i < points.size(); i++) {
if ((points.get(i).y < e.getY() && points.get(j).y >= e.getY() || points
.get(j).y < e.getY() && points.get(i).y >= e.getY())
&& (points.get(i).x <= e.getX() || points.get(j).x <= e
.getX())) {
if (points.get(i).x + (e.getY() - points.get(i).y)
/ (points.get(j).y - points.get(i).y)
* (points.get(j).x - points.get(i).x) < e.getX()) {
oddNodes = !oddNodes;
}
}
j = i;
}
return oddNodes;
}