我试图通过重新绘制坐标,在点数组中存储,然后重新创建它来拖动画布周围的路径。路径拖动但水平和垂直翻转,如镜像,在用户点击的位置。我不明白为什么。
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);
}
任何帮助将不胜感激,谢谢
答案 0 :(得分: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点会改变位置。
您可能希望使用此信息存储起始拖动位置并计算距离和更新的路径位置。