Canvas类常用的方法:

API 功能

方法

颜色

drawARGB(), drawRGB(), drawColor()

画点

drawPoint(),

画线(多条)

drawLine(),drawLines()

矩形(圆角矩形)

drawRect(), drawRoundRect()

图片

drawBitmap(),

文本

drawText(),drawPosText(),drawTextOnPath()


drawCircle()

椭圆

drawOval()

圆弧

drawArc()

路径

drawPath()

### 下面通过例子详细说明上述方法:
####1. **画点 drawPoint**

<font color=#ff0000 size=4 face="黑体">(1) 单点:</font>

####```drawPoint(float x, float y, Paint paint) ```
><font color=#aa33ff size=3 face="黑体">参数:</font>
**float X:**点的X坐标
**float Y:**点的Y坐标

```java
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(30);
canvas.drawPoint(100, 100, paint);




<div class="se-preview-section-delimiter"></div>

Android 图形处理框架 安卓图形api_数组


(2) 填充整个Canvas:

drawPoint(Paint paint)

参数:
Paint paint:填充Canvas的画笔

Paint paint = new Paint();
paint.setColor(Color.BLUE);
canvas.drawPaint(paint);




<div class="se-preview-section-delimiter"></div>

Android 图形处理框架 安卓图形api_java_02


(3) 多个点 :

public void drawPoints(float[] pts, Paint paint)

参数:
float[] pts: 点的集合,从第一个开始两两一组为一个点,元素个数必须是偶数,形如:pts = {x1, y1, x2, y2, x3, y3, ……};

Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(30);
float [] points = new float[]{20, 20, 100, 100, 250, 250, 450, 450};
canvas.drawPoints(points, paint);




<div class="se-preview-section-delimiter"></div>

Android 图形处理框架 安卓图形api_数组_03


public void drawPoints(float[] pts, int offset, int count, Paint paint)

参数:
float[] pts: 点的集合,从第一个开始两两一组为一个点,元素个数必须是偶数,形如:pts = {x1, y1, x2, y2, x3, y3, ……};
int offset: 点的集合 pts 数组中省去不绘制的数的个数,两个数为一个点;可以为奇数,但绘制的点会位置不正确;
count: 参与绘制的 pts 数组中数的个数,两个数为一个点,必需为偶数;

Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(30);
float [] points = new float[]{20, 20, 100, 100, 250, 250, 450, 450};
canvas.drawPoints(points, 2, 4, paint);




<div class="se-preview-section-delimiter"></div>

Android 图形处理框架 安卓图形api_java_04


如果将 offset 改为 1,即:

Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(30);
float [] points = new float[]{20, 20, 100, 100, 250, 250, 450, 450};
canvas.drawPoints(points, 1, 4, paint);




<div class="se-preview-section-delimiter"></div>

效果如下:

Android 图形处理框架 安卓图形api_数组_05


2. 画直线 drawLine()

(1) 一条直线:

public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint)

参数:
float startX : 起点横坐标;
float startY : 起点纵坐标;
float stopX : 终点横坐标;
float stopY : 终点纵坐标;
Paint paint : 画笔;

Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(20);
canvas.drawLine(30, 30, 150, 150, paint);




<div class="se-preview-section-delimiter"></div>

Android 图形处理框架 安卓图形api_圆角矩形_06

(1) 多条直线:

public void drawLines(float[] pts, Paint paint)

参数:
float[] pts: 点的集合,从第一个开始两两一组为一个点,元素个数必须是偶数,形如:pts = {x1, y1, x2, y2, x3, y3, ……};
Paint paint : 画笔;

Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(20);
float[] points = new float[]{30, 30, 150, 150, 250, 250, 400, 400};
canvas.drawLines(points, paint);




<div class="se-preview-section-delimiter"></div>

Android 图形处理框架 安卓图形api_java_07


public void drawLines(float[] pts, int offset, int count, Paint paint)

参数:
float[] pts: 点的集合,从第一个开始两两一组为一个点,元素个数必须是偶数,形如:pts = {x1, y1, x2, y2, x3, y3, ……};
int offset: 点的集合 pts 数组中省去不绘制的数的个数,两个数为一个点;可以为奇数,但绘制的点会位置不正确;
count: 参与绘制的 pts 数组中数的个数,两个数为一个点,必需为偶数;
Paint paint : 画笔;

Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(20);
float[] points = new float[]{30, 30, 150, 150, 250, 250, 400, 400};
canvas.drawLines(points, paint);




<div class="se-preview-section-delimiter"></div>

Android 图形处理框架 安卓图形api_Android 图形处理框架_08


3. 画矩形 drawRect

public void drawRect(RectF rect, Paint paint)

参数:
RectF rect 矩形区域
Paint paint : 画笔;

Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(20);
paint.setStyle(Paint.Style.STROKE);

RectF rectF = new RectF();
rectF.left = 50;
rectF.top = 50;
rectF.right = 400;
rectF.bottom = 200;

canvas.drawRect(rectF, paint);




<div class="se-preview-section-delimiter"></div>

Android 图形处理框架 安卓图形api_java_09

4. 画椭圆 drawOval

public void drawRect(RectF rect, Paint paint)

参数:
RectF rect 矩形区域, 椭圆的绘制是在一个矩形区域完成的
Paint paint : 画笔;

public void drawOval(float left, float top, float right, float bottom, Paint paint)

Paint paint = new Paint(); //椭圆画笔
paint.setColor(Color.GREEN);
paint.setStrokeWidth(5);
paint.setStyle(Paint.Style.STROKE);

Paint paint1 = new Paint(); //椭圆所在矩形区域画笔
paint1.setColor(Color.RED);
paint1.setStrokeWidth(5);
paint1.setStyle(Paint.Style.STROKE);

RectF rectF = new RectF();
rectF.left = 50;
rectF.top = 50;
rectF.right = 400;
rectF.bottom = 200;

canvas.drawRect(rectF, paint1);//画出矩形,为了更加形象显示椭圆的绘制规则
canvas.drawOval(rectF, paint);//绘制椭圆

Android 图形处理框架 安卓图形api_java_10