Android 基础图形绘制API详解

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);//绘制椭圆

这里写图片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章