路径是否包含一个点?

时间:2013-07-10 11:20:19

标签: android path click

在我的应用程序中,用户可以使用“笔”工具绘制形状,就像在Photoshop中一样。坐标存储在点阵列中,并且从它们构成路径。路径是在Canvas上绘制的。

我希望能够检测用户是否点击了形状,但我不知道如何开始。如果是常规形状,例如rectangle,我可以创建一个区域并使用它,但它们的路径可以包含许多点并且可以是任何形状。

感谢您的帮助......

1 个答案:

答案 0 :(得分:0)

感谢此网站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;
}