2017-08-01 73 views
0

我想創建一個應用程序,其中顯示的圖片類似於人類的手,用戶可以在其上繪製線條。例如像你想要畫的手或畫在給定的圖片上的手的線。用戶如何通過觸摸在形狀上繪畫或繪製線條

我創建了手形沒有layout文件,如下面的代碼所示。

我不知道用戶如何通過觸摸來繪製或繪製該形狀。

任何人都可以幫助我實現這個!!?

先謝謝您。

這裏是我的代碼:

public class YeknafareActivity_layout extends View { 

    Paint black_paintbrushstroke; 
    Path Hand; 


    public YeknafareActivity_layout(Context context) { 
     super(context); 

    } 


    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 


     black_paintbrushstroke = new Paint(); 
     black_paintbrushstroke.setColor(Color.BLACK); 
     black_paintbrushstroke.setStyle(Paint.Style.STROKE); 
     black_paintbrushstroke.setStrokeWidth(4); 


     Hand = new Path(); 
     Hand.moveTo(225, 844); // A 
     Hand.lineTo(191, 675); 

     Hand.moveTo(191, 675); // B 
     Hand.lineTo(114, 412); 

     Hand.moveTo(114, 412); // C 
     Hand.lineTo(147, 409); 

     Hand.moveTo(147, 409); // D 
     Hand.lineTo(235, 591); 

     Hand.moveTo(235, 591); // E 
     Hand.lineTo(179, 279); 

     Hand.moveTo(179, 279); // F 
     Hand.lineTo(222, 279); 

     Hand.moveTo(222, 279); // G 
     Hand.lineTo(300, 534); 

     Hand.moveTo(300, 534); // H 
     Hand.lineTo(308, 186); 

     Hand.moveTo(308, 186); // I 
     Hand.lineTo(341, 187); 

     Hand.moveTo(341, 187); // J 
     Hand.lineTo(382, 513); 

     Hand.moveTo(382, 513); // K 
     Hand.lineTo(427, 212); 

     Hand.moveTo(427, 212); // L 
     Hand.lineTo(460, 216); 

     Hand.moveTo(460, 216); // M 
     Hand.lineTo(462, 536); 

     Hand.moveTo(462, 536); // O 
     Hand.lineTo(476, 613); 

     Hand.moveTo(476, 613); // P 
     Hand.lineTo(507, 662); 

     Hand.moveTo(507, 662); // Q 
     Hand.lineTo(593, 501); 

     Hand.moveTo(593, 501); // R 
     Hand.lineTo(628, 492); 

     Hand.moveTo(628, 492); // S 
     Hand.lineTo(645, 511); 

     Hand.moveTo(645, 511); // T 
     Hand.lineTo(470, 960); 

     Hand.moveTo(470, 960); // U 
     Hand.lineTo(386, 989); 

     Hand.moveTo(386, 989); // V 
     Hand.lineTo(280, 947); 

     Hand.lineTo(225, 844); 


     canvas.drawPath(Hand, black_paintbrushstroke); 

回答

0

最後,我找到自己的答案,這是解決方案:

聲明路徑&油漆後

,您可以使用下面的代碼,這樣就可以在屏幕上畫任何東西:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    float xpos = event.getX(); 
    float ypos = event.getY(); 

    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      path.moveTo(xpos, ypos); 
      return true; 
     case MotionEvent.ACTION_MOVE: 
      path.lineTo(xpos, ypos); 
      break; 
     case MotionEvent.ACTION_UP: 
      break; 
     default: 
      return false; 
    } 
    invalidate(); 
    return true; 
} 

它適用於我:)

0

你應該重寫你的自定義視圖onTouchEvent方法對用戶的觸摸事件作出反應。

Path path = new Path(); 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_MOVE){ 
     path.lineTo(event.getX(), event.getY()); 
     invalidate(); 
    } 
} 
+0

感謝您的幫助,但它沒有奏效!現在用戶仍然無法畫出線條。 –

+0

有沒有人可以解決我的問題?我真的很感激。 –

相關問題