2011-08-03 165 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不行 –