Canvas

//绘制一个圆
canvas.drawCircle(300, 300, 200, paint);
参数:
centerX centerY 是圆心的坐标,第三个参数 radius 是圆的半径,单位都是像素。
解读:
以XY(0,0)为起点,X向右偏移300,Y向下偏移300,所到的坐标为圆中心,圆的半径为200px。

示例图:

解读图:

//颜色填充
canvas.drawColor(Color.BLACK);
多种写法:
canvas.drawColor(Color.parse("#88880000"); //半透明红色
canvas.drawRGB(100, 200, 100);
canvas.drawARGB(100, 100, 200, 100);
解读:
给整个画布设置颜色。
作用:
这类颜色填充方法一般用于在绘制之前设置底色,或者在绘制之后为界面设置半透明蒙版。
//绘制一个矩形
canvas.drawRect(100, 100, 500, 500, paint);
参数:
float left, float top, float right, float bottom, Paint paint
多种写法:
它还有两个重载方法canvas.drawRect(RectF rect, Paint paint) 和 canvas.drawRect(Rect rect, Paint paint) ,让你可以直接填写 RectF 或 Rect 对象来绘制矩形。
解读:
以XY(0,0)为起点,X从0向右偏移100为新起点,Y从0向下偏移100为新起点,X从0向右偏移500为终点,Y从0向下偏移500为终点,新起点和终点所得的区域,就是矩形区域。

示例图:

//画点
canvas.drawPoint(50, 50, paint);
示例:
paint.setStrokeWidth(20);
paint.setStrokeCap(Paint.Cap.ROUND);
canvas.drawPoint(50, 50, paint);
解读:
以XY(0,0)为起点,X向右偏移50,Y向下偏移50,在偏移后的坐标画下一个点,点的大小根据paint.setStrokeWidth(xx)设置;点的形状根据Paint.setStrokeCap(cap)设置,参数有圆头 (ROUND)、平头 (BUTT) 和方头 (SQUARE) 三种。
多种写法:
//批量画点,绘制四个点:(50, 50) (50, 100) (100, 50) (100, 100)
float[] points = {0f, 0, 50, 50, 50, 100, 100, 50, 100, 100, 150, 50, 150, 100};
canvas.drawPoints(points, 2/*跳过两个数,既前两个0*/, 8/*一共绘制8个数(4个点)*/, paint);

示例图:

//画椭圆
canvas.drawOval(50, 50, 350, 200, paint);
解读:
以XY(0,0)为起点,X从0向右偏移50为新起点,Y从0向下偏移50为新起点,X从0向右偏移350为终点,Y从0向下偏移200为终点,新起点和终点所得的区域,就是椭圆区域。
多种写法:
它还有一个重载方法canvas.drawOval(RectF rect, Paint paint),让你可以直接填写 RectF 来绘制椭圆
注意事项:
只能绘制横着的或者竖着的椭圆,不能绘制斜的

 示例图:

//画线,所得的结果是一条斜着的线
canvas.drawLine(200, 200, 800, 500, paint);
示例:
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
canvas.drawLine(200,200,800,500,paint);
解读:
以XY(0,0)为起点,X从0向右偏移200为新起点,Y从0向下偏移200为新起点,X从0向右偏移800为终点,Y从0向下偏移500为终点,X的新起点+Y的新起点=X的起点坐标,X的终点+Y的终点=Y的终点坐标,从X的起点坐标到Y的终点坐标就是绘制路径;该方法所得的效果就是在这个路径上画一条线,示例中并非是画一条斜线,而是路径刚好是斜着的,所以所得的结果是一条斜线。
多种写法:
//批量画线
float[] points = {20, 20, 120, 20, 70, 20, 70, 120, 20, 120, 120, 120, 150, 20, 250, 20, 150, 20, 150, 120, 250, 20, 250, 120, 150, 120, 250, 120};
canvas.drawLines(points, paint);

示例图:

//画圆角矩形
canvas.drawRoundRect(100,100,500,300,50,50,paint);
参数:
left, top, right, bottom 是四条边的坐标,rx 和 ry 是圆角的横向半径和纵向半径。
示例:
paint.setStrokeWidth(10);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
canvas.drawRoundRect(100,100,500,300,50,50,paint);
解读:
以XY(0,0)为起点,X从0向右偏移100为新起点,Y从0向下偏移100为新起点,X从0向右偏移500为终点,Y从0向下偏移300为终点,新起点和终点所得的区域,就是矩形区域,rx的50是圆角的横向半径,ry的50是圆角的纵向半径。
多种写法:
它还有一个重载方法canvas.drawRoundRect(RectF rect, float rx, float ry, Paint paint),让你可以直接填写 RectF 来绘制圆角矩形。

 示例图:

 

//绘制弧形或扇形
canvas.drawArc(200,100,800,500,-100,100,false,paint);
参数:
left, top, right, bottom 描述的是这个弧形所在的椭圆;startAngle 是弧形的起始角度(x 轴的正向,即正右的方向,是 0 度的位置;顺时针为正角度,逆时针为负角度),sweepAngle 是弧形划过的角度;useCenter 表示是否连接到圆心,如果不连接到圆心,就是弧形,如果连接到圆心,就是扇形。
示例:
paint.setStyle(Paint.Style.FILL);
//绘制扇形
canvas.drawArc(200,100,800,500,-100,100,false,paint);
//绘制弧形
canvas.drawArc(200,100,800,500,20,140,false,paint);
paint.setStyle(Paint.Style.STROKE);
//绘制不封口的弧形
canvas.drawArc(200,100,800,500,180,60,false,paint);
解读:
以XY(0,0)为起点,X从0向右偏移200为新起点,Y从0向下偏移100为新起点,X从0向右偏移800为终点,Y从0向下偏移500为终点,新起点和终点所得的区域,就是圆形区域,-100是起始绘画位置(X轴从正右方向为0度,旋转-100度的位置开始绘画),100是绘画的角度,false为是否从绘画的起点和绘画的终点连接到圆心,连接到圆心则自动绘画成扇形,不连接到圆心则为弧形。
注意事项:
Paint.Style.FILL是封口,Paint.Style.STROKE是不封口。

示例图:

//绘制自定义形状
canvas.drawPath(path, paint);
示例:
Path path = new Path();
path.addArc(200, 200, 400, 400, -225, 225);
path.arcTo(400, 200, 600, 400, -180, 225, false);
path.lineTo(400, 542);
canvas.drawPath(path, paint);
解读:
Path可以理解为是一个封装好的绘制模块,Path里面可以绘制所有canvas直接绘制的图形,只不过绘制好后保存在path变量里,之后调用canvas.drawPath(path, paint)来进行绘制。

示例图:

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页