android如何在画布上绘制圆圈,矩形?

时间:2011-08-03 07:16:35

标签: android

在我的应用程序中,我可以在触摸事件中在画布上绘制一些东西。

但问题是,一次可以在触摸事件中绘制单个项目。意味着如果我将putto()和moveto()然后它将绘制线条。 如果给出了addCircle()ll那么圆形绘制。还有Rect和椭圆形。

但我想为此提供不同的按钮。默认情况下,将绘制线条。如果按下Circle,则绘制圆形,如果按下Rect按钮,则Rectangle将使用相同的触摸事件在画布上绘制。

所以我想知道我将在触摸事件下写什么,以便它可以用于每次点击按钮? 给我一个方法。 谢谢

2 个答案:

答案 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;
    }
}

答案 1 :(得分:0)

我不确定我是否正确理解你在说什么。但是,如果我这样做,可以使用canvas.drawCircle,canvas.drawRect方法完成。