2017-02-18 1 views
1

드로잉 애플리케이션을 프로그래밍했는데 드로잉의 모든 X Y를 가져 오려고합니다. 다시 말하면, 화면을 터치 할 때마다 좌표 x와 y를 2 차원 테이블에 넣습니다.cordinate X Y 드로어 안드로이드

좌표가 바뀌는 것을 알아 내기 위해 축배를 냈습니다. 그리고 나는 그들이 movetouch 메서드에서 테이블을 선언하고 난 여전히 10 행을 볼 수있는 축배를 만듭니다. 배열에서 조정 된 축 정렬이 변경되어 x 및 y가 변경 될 때마다 값이 파쇄된다는 사실을 알게되었습니다. 나는

public boolean onTouchEvent(MotionEvent event) { 
    float x = event.getX(); 
    float y = event.getY(); 
     switch (event.getAction()) { 

      case MotionEvent.ACTION_DOWN: 

        startTouch(x, y); 
        invalidate(); 
        break; 

      case MotionEvent.ACTION_UP: 

        upTouch(); 
        invalidate(); 
        break; 

      case MotionEvent.ACTION_MOVE: 

        moveTouche(x, y); 
        invalidate(); 
        break; 

     } 
     return true; 
    } 

방법을 재배하고 moveTouch

public void moveTouche (float x,float y) { 
    if ((canDraw)&& drawing) { 
    float dx = Math.abs(x - mX); 
    float dy = Math.abs(y - mY); 
    if(dx >= Tolerance || dy >= Tolerance){ 
     path.quadTo(mX,mY,(x+mX)/2,(y+mY)/2); 
     mX = x ; 
     mY = y; 
     double[][] point = new double [99][2]; 
     for (int i = 0; i < 99; i++) { 

      point[i][0]=x; 
      point[i][1]=y; 


     } 
     Toast.makeText(getContext(),"y = "+point[10][1]+" ",Toast.LENGTH_LONG).show(); 

    }} 
} 

enter image description here

+0

어떻게 작동합니까? –

+0

@AndyTurner 그것은 단지 하나의 지점을 제공합니다 – CamlX

+0

사용자가 터치하는 화면에 무언가를 그리기를 원하십니까? –

답변

2

어떤 경로에서나 원하는만큼 많은 점을 읽을 수 있습니다. 경로 중간에서 좌표를 읽는 방법의 예 :

PathMeasure pm = new PathMeasure(myPath, false); 
//coordinates will be here 
float aCoordinates[] = {0f, 0f}; 

//get coordinates of the middle point 
pm.getPosTan(pm.getLength() * 0.5f, aCoordinates, null); 

경로 시작부터 점 좌표까지의 거리를 전달할 수 있습니다.

+0

감사합니다 :) 그냥 또 다른 질문입니다. 드로잉이 이미 그려진 직선 (검은 색)이거나 곡선을 그려 보았습니다. 그려진 방법은 좌표를 좌표와 비교하는 방법을 보여줍니다. 빨간색 그리기, 애니메이션을 트리거합니다. – CamlX

+0

기꺼이 당신과 함께 할 수 있고 당신을 도왔습니다 :) 내 대답이 도움이된다면이 대답을 수락하고 upvote하십시오. –

+0

두 개의 커브를 비교해 보겠습니다. 다음 문제에 대해 제가 무엇을 할 수 있는지 보도록하겠습니다. 예를 들어 –

관련 문제