【问题标题】:Does a Path contain a Point?路径是否包含点?
【发布时间】:2013-07-08 07:19:36
【问题描述】:

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

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

感谢您的帮助...

【问题讨论】:

标签: android path click


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2019-03-18
    • 2018-07-17
    相关资源
    最近更新 更多