2011-08-03 174 views
2

在我的應用程序中,我可以在觸摸事件中的畫布上繪製某些東西。android如何在畫布上畫圓圈,矩形?

但問題是,一次可以在觸摸事件中繪製單個項目。意味着如果我將把lineto()和moveto()那麼它會畫線。 if addCircle()ll then drawn circle.and Rect and oval。

但我想給不同的按鈕。默認線將被繪製。如果我按圓形,那麼圓形將繪製,如果按下Rect按鈕,則Rectangle將使用相同的觸摸事件在畫布上繪製。

因此,我想知道我將在觸摸事件下寫什麼,以便它可以用於每個按鈕點擊? 給我一個方法。 謝謝

+0

已經做了任何東西來改變每一個繪畫項目的顏色,如線條或圓或什麼?如果是的話,比在這裏回覆。 –

回答

2
//THESE ARE GLOBAL! 
boolean isDrawing = false; 
boolean circle = true; //default 
boolean rect = false; 
boolean line = false; 

創建三個按鈕:

Button circleB,rectB,lineB; 

在circleB(的onClick):

boolean circle = true; //set circle to true 
boolean rect = false; 
boolean line = false; 

在rectB(的onClick):

boolean circle = false; 
boolean rect = true; //set rect to true 
boolean line = false; 

在lineB(的onClick):

boolean circle = false; 
boolean rect = false; 
boolean line = true; //set line to true 

對於圓尺寸:

//Global 
int size = 10; //Default: 
boolean isScaling=false; 

public boolean onTouch(View arg0, MotionEvent e) { 
switch(e.getAction()){ 
    case(MotionEvent.ACTION_DOWN): 
     isScaling=true; 
    break; 
    case(MotionEvent.ACTION_MOVE): 
     if(isScaling){ 
      size++; //increment as you want 
     } 
    break; 
    case(MotionEvent.ACTION_UP): 
     isScaling=false; 
     if(!isDrawing){ 
      isDrawing=true; 
      if(circle) 
      { 
       //code to Draw Circle 
      } 
      else if(rect) 
      { 
       //code to Draw Rect 
      } 
      else if(line) 
      { 
       //code to Draw line 
      } 
      isDrawing=false; 
     } 
     //reset size I think it is better to reset it 
    break; 
    } 
} 
+0

感謝您的答覆。我只是喜歡這個,但它不能正常工作。有沒有其他方法? –

+0

我編輯並添加了'布爾isDrawing'。你能告訴我什麼是問題? –

+0

還有一件事我想知道每次圓的半徑是相同的如此相同的大小的圓畫在那裏。但我想如果我觸摸並移動,那麼圓圈大小將增加,如果觸摸起來,那麼最後一個大小圓圈將出現在那裏。我該怎麼做? –

0

我不確定我是否正確理解你在說什麼。但如果我這樣做,可以用canvas.drawCircle,canvas.drawRect方法來完成。

+0

我知道。我正在使用路徑。並在路徑path.lineto()&path.moveto()在那裏。對於circle path.addcircle()在那裏。但我想知道如何添加不同的按鈕點擊? –

+0

意味着Touch_down,touch_move,&touch_up是否有na?所以如果我會寫path.lineto(),path.moveto(),path.addcircle(),那麼它會一次添加。但我想要如果我按圓形按鈕,那麼它將只繪製Cicle不行 –