2013-07-10 3 views
0

좌표를 다시 플로팅하고 점 배열에 저장 한 다음 캔을 다시 작성하여 캔버스 주위의 경로를 드래그하려고합니다. 경로는 드래그되지만 사용자가 클릭하는 위치의 좌우 대칭 이미지처럼 수평 및 수직으로 뒤집습니다. 나는 이유를 모른다. 이 라인에 문제가경로 드래그

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); 
} 

어떤 도움을 주시면 감사합니다, 감사 제 생각에는

답변

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가 자리를 변경합니다.

이 정보를 사용하여 시작 끌기 위치를 저장하고 거리와 업데이트 된 경로 위치를 계산할 수 있습니다.