当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > Android图形图像(三)绘图

Android图形图像(三)绘图 时间:2018-09-27      来源:未知

Android中自带有图形绘制的相关类,在通常情况下,一般通过复写View中的onDraw()方法即可完成绘制,那么在绘制的过程中,主要的类就是 Canvas和Paint类,下面我们来讲解一下这两个类。

1 Canvas

Canvas的意思是画布,顾名思义,它充当的就是一类似画布的一个工具类,它封装了很多图形绘制的方法,由于篇幅问题,本书不可能将所有的方法都列举出来,在此只列举一些常用的方法,若读者有兴趣可自行参考谷歌官方的API文档。

(1) drawARGB(int a, int r, int g, int b)

绘制ARGB颜色的纯色画面。参数为ARGB的四个数值。

(2) drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

绘制弧形。参数分别为矩形对象、弧形的起始角度、弧形的中止角度、是否绘制中心点、画笔对象。

(3) drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

绘制Bitmap类型的画面。参数分别为Bitmap对象、左偏移量、上偏移量、画笔对象。

(4) drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)

绘制Bitmap类型的画面。参数分别为Bitmap对象、矩形对象(图片剪裁区域)、矩形对象(屏幕剪裁区域),画笔对象。

(5) drawCircle(float cx, float cy, float radius, Paint paint)

绘制圆形。参数分别为中心点x轴坐标、中心点y轴坐标、半径、画笔对象。

(6) drawColor(int color)

绘制纯色画面。参数为颜色值。

(7) drawLine(float startX, float startY, float stopX, float stopY, Paint paint)

绘制直线。参数分别为起始点x轴坐标、起始点y轴坐标、中止点x轴坐标、中止点y轴坐标、画笔对象。

(8) drawOval(RectF oval, Paint paint)

绘制椭圆,值得一提的是这个椭圆的形状是根据矩形来定位的。参数分别为矩形对象、画笔对象。

(9) drawPath(Path path, Paint paint)

绘制制定路径。参数分别为路径对象、画笔对象。

(10) drawPoint(float x, float y, Paint paint)

绘制点。参数分别为x轴坐标、y轴坐标、画笔对象。

(11) drawRGB(int r, int g, int b)

绘制纯色画面,参数分别为RGB的三个数值。

(12) drawRect(Rect r, Paint paint)

绘制矩形。参数分别为矩形对象、画笔对象。

(13) drawRoundRect(RectF rect, float rx, float ry, Paint paint)

绘制圆角矩形。参数分别为矩形对象、x轴圆角半径、y轴圆角半径、画笔对象。

(14) drawText(String text, float x, float y, Paint paint)

绘制文字。参数分别为文字字符串、x轴坐标、y轴坐标、画笔对象。

(15) drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint)

按路径绘制文字。参数分别为文字字符串、路径对象、起始点到文本之间的间隔、路径线到文本之间的间隔、画笔对象。

(16) getWidth()

返回Canvas宽度。

(17) getHeight()

返回Canvas高度。

(18) translate(float dx, float dy)

对Canvas进行平移。参数分别为x轴移动距离、y轴移动距离。

2 Rect和Path

在Canvas的方法里,有两个类要单独讲解,它们分别是Rect类和Path类。

(1) Rect类

Rect类是矩形的封装类,其方法和属性非常好理解,常用的构造方法为Rect(int left, int top, int right, int bottom),参数分别为矩形的左上角x轴坐标、矩形的左上角y轴坐标、矩形的右下角x轴坐标、矩形的右下角y轴坐标。当然,也可以使用无参构造器,通过set方法去设置这些参数。 另外还有一个RectF类,主要的区别在于接受float类型的参数,相比Rect类有更好的精度。

(2) Path类

Path类是路径的封装类,其常用的方法有三个。

1 moveTo(float x, float y)

设置路径的起始位置。参数分别为起始位置的x轴坐标、起始位置的y轴坐标。

2 lineTo(float x, float y)

设置路径的经过位置。参数分别为经过位置的x轴坐标、经过位置的y轴坐标。

3 close()

结束路径,将上一个位置设置为结束位置。

Path类中有若干封装好的路径,如下:

1addArc(RectF oval, float startAngle, float sweepAngle)

添加弧形路径。参数分别为矩形对象、起始角度、持续角度。

2addCircle(float x, float y, float radius, Path.Direction dir)

添加圆形路径。参数分别为圆心x轴坐标、圆心y轴坐标、圆形半径、方向参数。方向参数一共有两个值,分别为Path.Direction.CCW(顺时针)和Path.Direction.CCW(逆时针)。

3addOval(RectF oval, Path.Direction dir)

添加椭圆形路径。参数分别为矩形对象、方向参数。

4addRect(RectF rect, Path.Direction dir)

添加矩形路径。参数分别为矩形对象、方向参数。

5addRoundRect(RectF rect, float rx, float ry, Path.Direction dir)

添加圆角矩形路径。参数分别为矩形对象、圆角的x轴半径、圆角的y轴半径、方向参数。

通过上面的方法可以非常方便的画出各种固定形状的路径,优先使用上面的方法而不是lineTo方法。

3 Paint

Paint类可以说是跟Canvas类相辅相成的,Paint表示画笔,其中包含了各种设置绘图样式和颜色等属性的方法,常用方法如下所示:

(1) setARGB(int a, int r, int g, int b)

设置颜色。参数为ARGB颜色数值。

(2) setAlpha(int a)

设置透明度。参数范围为0~255。

(3) setAntiAlias(boolean aa)

设置是否开启抗锯齿。开启抗锯齿后,画笔边缘毛刺将会减少,画笔边缘更圆滑,同样性能开销也会加大。

(4) setColor(int color)

设置颜色。

(5) setStrokeWidth(float width)

设置画笔粗度。

(6) setTextSize(float textSize)

设置文字大小。只有在画笔绘制文字时生效。

(7) setStyle(Paint.Style style)

设置画笔风格。有三个参数:FILL(填充)、STROKE(画边)、FILL_AND_STROKE(即填充又画边)。

(8) measureText(String text)

返回文字的宽度。

4 Canvas、Paint的使用

本节通过实际代码以及效果来演示Canvas和Paint的使用。

public class CanvasPaintView extends View {

public CanvasPaintView(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

// 绘制背景颜色为白色

canvas.drawColor(Color.WHITE);

// 获得画笔对象

Paint paint = new Paint();

// 设置画笔ARGB颜色

paint.setARGB(200, 120, 110, 90);

// 设置画笔抗锯齿为开

paint.setAntiAlias(true);

// 绘制纯色画面

canvas.drawRGB(200, 200, 255);

// 获得矩形对象

Rect rect = new Rect(20, 100, 70, 120);

// 绘制矩形

canvas.drawRect(rect, paint);

// 获得矩形对象

RectF arcRect = new RectF(10.1f, 120.2f, 120.3f, 180.4f);

// 设置画笔颜色为黑色

paint.setColor(Color.BLACK);

// 绘制弧形

canvas.drawArc(arcRect, 10.1f, 120.2f, true, paint);

// 绘制直线

canvas.drawLine(10, 10, 60, 10, paint);

// 获得路径对象1

Path path1 = new Path();

// 设置路径起始点

path1.moveTo(45, 45);

// 设置路径点

path1.lineTo(60, 75);

// 设置路径点

path1.lineTo(250, 175);

// 路径绘制结束

path1.close();

// 绘制路径

canvas.drawPath(path1, paint);

// 设置文字大小

paint.setTextSize(20);

// 绘制文字

canvas.drawText("Test draw text.", 130, 60, paint);

// 设置画笔粗度

paint.setStrokeWidth(10);

// 绘制点

canvas.drawPoint(170, 20, paint);

}

}

显示效果如图。

上一篇:系统移植之bootloader移植

下一篇:数据库事务,Connection连接池

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部