2015-09-23 45 views
0

正如你可以看到當我在我的應用程序中使用canvas.drawpath()我沒有得到一個用戶想要的結果。帆布drawpath不準確

看我的手指在哪裏,它在哪裏畫!

enter image description here

//Bitmap is the picture 
    imageview.setImageBitmap(bitmap); 
    Canvas canvas = new Canvas(bitmap); 
    Paint paint = new Paint(); 
    paint.setColor(Color.Black); 
    paint.setStrokeWidth(50); 
    paint.setStyle(Paint.Style.STROKE); 
    path = new Path(); 
    imageview.setOnTouchListener(this); 

這裏onTouchListener

public boolean onTouch(View v, MotionEvent event) { 
      int action = event.getAction(); 
      switch (action) { 
      case MotionEvent.ACTION_DOWN: 
       path.moveTo(event.getX(), event.getY()); 
       path.lineTo(event.getX(), event.getY()); 
       canvas.drawPath(path, paint); 
       imageview.invalidate(); 
       break; 
      case MotionEvent.ACTION_MOVE: 
        path.lineTo(event.getX(), event.getY()); 
        canvas.drawPath(path, paint); 
        imageview.invalidate(); 
        break; 
      case MotionEvent.ACTION_UP: 
        path.lineTo(event.getX(), event.getY()); 
        canvas.drawPath(path, paint); 
        imageview.invalidate(); 

       break; 
      case MotionEvent.ACTION_CANCEL: 
       break; 
      default: 
       break; 
      } 
      return true; 
      } 
+1

看到'getImageMatrix'方法和閱讀** **仔細'Matrix' API – pskink

+0

時,我應該調用此方法.. – Device

+0

當你必須做映射:視圖座標<->位圖座標 – pskink

回答

0

其實我的問題是,我不能得到真正的X和Y位置。

要做到這一點很簡單,你可以獨自做到這一點,而不先生pskink幫助

  Matrix official= new Matrix(); 
      image.getImageMatrix().invert(official); 
      float[] REALXY= new float[] {documentation.getX(), documentation.getY()}; 
      official.mapPoints(REALXY); 
      float GETREALX; 
      GETREALX=REALXY[0]; 
      float GETREALY; 
      GETREALY= REALXY[1];