Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.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,好了,请原谅我刚刚学习了AndroidGraphics,我只知道一点。我可以用画布中的绘制类似于线条的东西 Paint background = new Paint(); background.setColor(getResources().getColor( R.color.puzzle_background)); canvas.drawRect(0, 0, getWidth(), getHeight(), background);

好了,请原谅我刚刚学习了
Android
Graphics,我只知道一点。我可以用
画布
中的
绘制类似于线条的东西

    Paint background = new Paint();
    background.setColor(getResources().getColor(
            R.color.puzzle_background));
    canvas.drawRect(0, 0, getWidth(), getHeight(), background);


    Paint dark = new Paint();
    dark.setColor(getResources().getColor(R.color.puzzle_dark));
    Paint hilite = new Paint();
    hilite.setColor(getResources().getColor(R.color.puzzle_hilite));
    Paint light = new Paint();
    light.setColor(getResources().getColor(R.color.puzzle_light));
    // Draw the minor grid lines
    for (int i = 0; i < 9; i++) {
        canvas.drawLine(0, i * height, getWidth(), i * height, light);
        canvas.drawLine(0, i * height + 1, getWidth(), i * height + 1,
                hilite);
        canvas.drawLine(i * width, 0, i * width, getHeight(), light);
        canvas.drawLine(i * width + 1, 0, i * width + 1, getHeight(),
                hilite);
    }
    // Draw the major grid lines
    for (int i = 0; i < 9; i++) {
        if (i % 3 != 0)
            continue;
        canvas.drawLine(0, i * height, getWidth(), i * height, dark);
        canvas.drawLine(0, i * height + 1, getWidth(), i * height + 1,
                hilite);
        canvas.drawLine(i * width, 0, i * width, getHeight(), dark);
        canvas.drawLine(i * width + 1, 0, i * width + 1, getHeight(),
                hilite);
    }
绘制背景=新绘制();
background.setColor(getResources().getColor(
R.color.puzzle_背景);
drawRect(0,0,getWidth(),getHeight(),background);
深色油漆=新油漆();
setColor(getResources().getColor(R.color.puzzle_dark));
Paint hilite=新的Paint();
setColor(getResources().getColor(R.color.puzzle_hilite));
油漆灯=新油漆();
setColor(getResources().getColor(R.color.puzzle_light));
//绘制次要网格线
对于(int i=0;i<9;i++){
绘制线(0,i*height,getWidth(),i*height,light);
画布.抽绳(0,i*height+1,getWidth(),i*height+1,
赤铁矿);
绘制线(i*width,0,i*width,getHeight(),light);
canvas.drawLine(i*width+1,0,i*width+1,getHeight(),
赤铁矿);
}
//绘制主网格线
对于(int i=0;i<9;i++){
如果(i%3!=0)
继续;
绘制线(0,i*height,getWidth(),i*height,深色);
画布.抽绳(0,i*height+1,getWidth(),i*height+1,
赤铁矿);
canvas.drawine(i*width,0,i*width,getHeight(),深色);
canvas.drawLine(i*width+1,0,i*width+1,getHeight(),
赤铁矿);
}

但是如果我想在
Android
中绘制一些东西,我不知道哪些是必要的元素,
Paint
是必要的元素之一吗?谢谢。

我知道在安卓系统中有三种基本的绘图方法

1-覆盖
onDraw
(正如您所做的那样),它为您提供了在视图曲面上绘制的视图画布。这用于简单图形,因为代码在主线程中运行

2-子类
SurfaceView
,它为绘制提供了一个单独的线程(提供了画布以及您绘制的曲面),用于中等负载绘制,因为它有一个单独的线程,所以它可以比1快

3-
OpenglSurfaceView
,这是一个不同的概念,您可以创建一个3D场景,并直接使用GPU进行渲染。这是用于重量级绘图,因为与GPU直接对话可以实现更快的动画,特别是在3D游戏中


正如我在评论中所说,
Canvas
是您的调色板,它为您提供了绘制线、圆、图像等的基本工具。而,
Paint
是您的画笔,它可以让您确定笔划宽度、颜色、文本大小和字体等。如果您对
Canvas
的默认设置感到满意,则可能不需要更改绘制对象。您的绘图板就是视图的表面。

您能澄清一下您想要实现的目标吗?Canvas类是你的调色板,Paint是你的画笔我的意思是如果我想在android中绘制图形,这两个
Canvas
Paint
是需要初始化的实例?谢谢。谢谢你出色的回答,我想这对像我这样刚学会安卓系统的人会很感激和帮助。再次感谢。