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>
(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>
(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>
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>
如果将 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>
效果如下:
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>
(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>
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>
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>
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);//绘制椭圆