1

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

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

谢谢你的帮助...

4

1 回答 1

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;
}
于 2013-07-10T12:02:33.673 回答