【问题标题】:Dragging a Path拖动路径
【发布时间】:2013-07-08 16:53:41
【问题描述】:

我试图通过重新绘制坐标来拖动画布周围的路径,存储在点数组中,然后重新创建它。路径在用户单击的位置上拖动但水平和垂直翻转,就像镜像一样。我不知道为什么。

private void drag(MotionEvent e) {
    // TODO correct weird flip

    if (clicked(e)) {
        for (Point p : points) {
            int modX = (int) (e.getX() + (e.getX() - p.x));
            int modY = (int) (e.getY() + (e.getY() - p.y));
            p.set(modX, modY);
        }
        updateOutline();
    }
}

private void updateOutline() {
    // update the outline
    outline = new Path();
    outline.moveTo(points.get(0).x, points.get(0).y);

    for (Point coor : points)
        outline.lineTo(coor.x, coor.y);
}

任何帮助将不胜感激,谢谢

【问题讨论】:

    标签: android path touch android-canvas motionevent


    【解决方案1】:

    我认为这几行有问题:

    int modX = (int) (e.getX() + (e.getX() - p.x));
    int modY = (int) (e.getY() + (e.getY() - p.y));
    

    考虑两点 A(1,5) 和 B(4,5)。如果用户在 C(3,6) 中单击,则点 A 将转换为 A'(5, 7),点 B 将转换为 B'(2, 7)。如您所见,A 点和 B 点会改变位置。

    您可能希望存储开始拖动位置并使用此信息计算距离和更新的路径位置。

    【讨论】:

      猜你喜欢
      • 2015-01-20
      • 2014-07-09
      • 2016-06-21
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      相关资源
      最近更新 更多