Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android如何在画布上绘制圆形、矩形?_Android - Fatal编程技术网

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

android如何在画布上绘制圆形、矩形?,android,Android,在我的应用程序中,我能够在触摸事件中在画布上绘制一些东西 但问题是,一次可以在触摸事件中绘制单个项目。意思是如果我把lineto()和moveto()放在一起,它就会画线。 如果给定了addCircle()ll,则绘制圆。对于矩形和椭圆形也是如此 但是我想给你不同的按钮。默认情况下,将绘制一条直线。若我按下圆圈,那个么圆圈将被绘制,若按下Rect按钮,那个么矩形将使用相同的触摸事件在画布上绘制 所以我想知道我将在触摸事件下写些什么,这样每次点击按钮都能正常工作? 给我一条路。 谢谢你我不确定我是

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

但问题是,一次可以在触摸事件中绘制单个项目。意思是如果我把lineto()和moveto()放在一起,它就会画线。 如果给定了addCircle()ll,则绘制圆。对于矩形和椭圆形也是如此

但是我想给你不同的按钮。默认情况下,将绘制一条直线。若我按下圆圈,那个么圆圈将被绘制,若按下Rect按钮,那个么矩形将使用相同的触摸事件在画布上绘制

所以我想知道我将在触摸事件下写些什么,这样每次点击按钮都能正常工作? 给我一条路。
谢谢你

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

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

创建三个按钮:

Button circleB,rectB,lineB;

在圆圈(onClick)中:


在rectB(onClick)中:


在B行中(单击):


对于圆大小:

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


是的,我知道。我正在使用路径。行path.lineto()和path.moveto()的路径中也有。对于圆路径,存在addcircle()。但我想知道如何在点击按钮时添加不同的内容?是否存在触控向下、触控移动和触控向上的意思?所以,如果我写path.lineto(),path.moveto(),path.addcircle(),那么它将一次添加。但我想,如果我按下圆圈按钮,那么它将只画圆圈而不是线条。谢谢你的回复。我只喜欢这个,但它不能正常工作。还有其他方法吗?我编辑并添加了
布尔isDrawing
。你能告诉我问题出在哪里吗?每次圆半径相同,因此绘制的圆大小相同,我还想知道一件事。但我想,如果我触摸并移动,则圆圈大小将增加,如果触摸,则最后一个大小的圆圈将出现在那里。我该怎么做呢?实际上,关键是它的工作。从小到大,所有的圆圈都在那里可见。我只想要最后一个圆圈。我该怎么做?有没有做过任何事情来改变每个绘图项目的颜色,比如线条、圆圈或其他什么?如果是,请在此处回复。
boolean circle = false;
boolean rect = true; //set rect to true
boolean line = false;
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;
    }
}