Android Canvas的常用方法

我们可以把这个Canvas理解成系统提供给我们的一块内存区域(但实际上它只是一套画图的API,真正的内存是下面的Bitmap),而且它还提供了一整套对这个内存区域进行操作的方法,所有的这些操作都是画图API。也就是说在这种方式下我们已经能一笔一划或者使用Graphic来画我们所需要的东西了,要画什么要显示什么都由我们自己控制。

这种方式根据环境还分为两种:一种就是使用普通View的canvas画图,还有一种就是使用专门的SurfaceView的canvas来画图。两种的主要是区别就是可以在SurfaceView中定义一个专门的线程来完成画图工作,应用程序不需要等待View的刷图,提高性能。前面一种适合处理量比较小,帧率比较小的动画,比如说象棋游戏之类的;而后一种主要用在游戏,高品质动画方面的画图。

Paint 代表了Canvas上的画笔、画刷、颜料等等;

Paint类常用方法:

setARGB(int a, int r, int g, int b) // 设置 Paint对象颜色,参数一为alpha透明值

setAlpha(int a) // 设置alpha不透明度,范围为0~255

setAntiAlias(boolean aa) // 是否抗锯齿

setColor(int color)  // 设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义

setTextScaleX(float scaleX)  // 设置文本缩放倍数,1.0f为原始

setTextSize(float textSize)  // 设置字体大小

setUnderlineText(booleanunderlineText)  // 设置下划线

// 1、将会以颜色ARBG填充整个控件的Canvas背景

//mCanvas.drawARGB(122, 10, 159, 163) ;

// 2、将会以颜色ARBG填充整个控件的Canvas背景

//mCanvas.drawColor(Color.BLUE) ;

// 3、绘制颜色,但是要制定一个mode

//mCanvas.drawColor(Color.BLUE, Mode.SCREEN) ;

// 4、画背景,跟2等效

//mCanvas.drawPaint(mPaint) ;

// 5、画一个点

//mCanvas.drawPoint(23, 23, mPaint) ;

// 6、画很多点这里的float[] 表示{x0,y0,x1,y1,x2,y2,x3,y3.....}

//mCanvas.drawPoints(new float[]{10,11,10,12,10,13,10,14,10,15,10,16}, mPaint) ;

// 7、画线

//mCanvas.drawLine(...) ;

// 8、画长方形  Rect 和RectF的区别?

//精度不一样,Rect是使用int类型作为数值,RectF是使用float类型作为数值

//Rect r = new Rect(10,10,50,50) ;

//mCanvas.drawRect(r, mPaint) ;

//RectF rf = new RectF(10,10,50,50) ;

//mCanvas.drawRect(rf, mPaint) ;

//mCanvas.drawRect(10, 10, 50, 50, mPaint) ;

// 9、画椭圆 初始化RectF的参数是(left,top,right,bottom)

//RectF rf = new RectF(100,100 ,200 ,250) ;

//mCanvas.drawOval(rf, mPaint) ;

// 10、画圆 (圆心x0,圆心y0,半径,paint)

//mCanvas.drawCircle(100, 100, 50, mPaint) ;

// 11、画圆弧 RectF对象表明内切矩形的(left,top,right,bottom)

//RectF rf = new RectF(100 ,100 ,200 ,200) ;

// 参数(rf,startAngle ,angle ,sweepAngle ,paint) sweepAngle表明是否显示圆弧三角形 angle画多少度

//mCanvas.drawArc(rf, 60, 30, true, mPaint) ;

// 12、绘制圆角矩形 RectF是矩形的(left,top,right,bottom)

//RectF rf = new RectF(100 ,100 ,200 ,200) ;

// 50表明x方向的半径,20表示y方向的半径

//mCanvas.drawRoundRect(rf, 50, 20, mPaint) ;

// 13、画任意多边形

//Path path = new Path() ;

//path.moveTo(100, 100) ;

//path.lineTo(200, 200) ;

//path.lineTo(300, 200) ;

//mCanvas.drawPath(path, mPaint) ;

// 14、通过Path对象,也可以画其他的图形

//Path path = new Path() ;

//path.addCircle(100, 100, 20, Path.Direction.CCW) ;

//mCanvas.drawPath(path ,mPaint);

/*drawBitmap

drawText

drawPicture*/

/*Rect r = new Rect(100,100,200,200) ;

ByteArrayOutputStream out = new ByteArrayOutputStream();

Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) ;

InputStream in = new ByteArrayInputStream(out.toByteArray()) ;

*/

/*Picture picture = Picture.createFromStream(mContext.getResources().openRawResource(R.raw.bg)) ;

mCanvas.drawPicture(picture) ;*/

// 15、画bitmap对象

//mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg),100, 100, mPaint) ;

// 16、Matrix中包含了对Bitmap的处理操作

/*Matrix m = new Matrix() ;

m.postScale(2, 2) ;

m.postRotate(60) ;

mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg), m, mPaint) ;*/

// 17、画带Matrix参数的bitmap,经过Matrix对象可以对bitmap做相关的处理,比如旋转,缩放,移动等《关于Matrix的使用另行总结》

/*Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;

Matrix m = new Matrix() ;

m.postScale(2, 2) ;

m.postRotate(60) ;

m.postTranslate(300, 300) ;

mCanvas.drawBitmap(bitmap, m, mPaint) ;*/

//mCanvas.drawBitmap(....) ; 暂不总结

// 18、画文字

//mCanvas.drawText("123", 10, 10, mPaint) ;

//mCanvas.drawText(....) ; 暂不总结

关于抽奖转盘的绘制,请参见:http://blog.csdn.net/lmj623565791/article/details/41722441

时间: 2024-10-13 07:27:47

Android Canvas的常用方法的相关文章

Android Canvas save() restore()

Android Canvas save() restore()

canvas绘画常用方法

先说一下canvas元素比较游泳的方法主要是canvas通过getContext()方法获取的上下文对象. 其次设置颜色方面,通常有四种方法:16进制颜色值.英语单词.rgb.rgba.主要注意的是后两者,rgb的三个参数是红绿蓝0-255的值,rgba在此基础上添加了第四个参数透明度,范围0-1. 1.画矩形 <!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8&q

Android canvas clip 参数解释

Android 操作Canvas时,可以对一些区域进行多次的操作(包括与.或.非.异或等),示例代码如下 canvas.save(); canvas.translate(10, 310); canvas.clipRect(0, 0, 60, 60); canvas.clipRect(40, 40, 100, 100, Region.Op.XOR); 第二次的Rect与第一次Rect的异或. drawScene(canvas); canvas.restore(); 最后一个参数有多个选择,分别是:

【转】Android Canvas的save(),saveLayer()和restore()浅谈

Android Canvas的save(),saveLayer()和restore()浅谈 时间:2014-12-04 19:35:22      阅读:1445      评论:0      收藏:0      [点我收藏+] save()  saveLayer()  restore() 1.在自定义控件当中你onMeasure和onLayout的工作做完成以后就该绘制该控件了,有时候需要自己在控件上添加一些修饰来满足需求 复写onDraw(Canvas canvas),其中Canvas就像是

Android Canvas绘制

public class DrawView extends View { public DrawView(Context context) {  super(context); } @Override protected void onDraw(Canvas canvas) {  super.onDraw(canvas);  /*   * 方法 说明 drawRect 绘制矩形 drawCircle 绘制圆形 drawOval 绘制椭圆 drawPath 绘制任意多边形   * drawLine

【转】Android Canvas绘图详解(图文)

转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html Android Canvas绘图详解(图文) 泡在网上的日子 发表于 2012-12-12 20:29 第 63165 次阅读 Canvas,android 15 Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.今天我们主要要了解的是2D相关的,如果你想看3D的话那么可以跳

Android Canvas之Path操作

接上篇,Android自定义View工具:Paint&Canvas(二) 上一篇中介绍的Canvas绘制图形只能画一些常规图形(圆,椭圆,矩形等),如果想绘制更复杂的图形,Path神器来了! Path是什么? Path类将多种复合路径(多个轮廓,如直线段.二次曲线.立方曲线)封装在其内部的几何路径. 如何绘制Path: 通过设置Paint的Style(FILL.STROKE.FILL_AND_STROKE),然后调用canvas.drawPath(path, paint):Path还可以用于剪切

android canvas

canvas 这个类相当于一个画布,你可以在里面画很多东西: 我们可以把这个Canvas理解成系统提供给我们的一块内存区域(但实际上它只是一套画图的API,真正的内存是下面的Bitmap),而且它还提供了一整套对这个内存区域进行操作的方法,所有的这些操作都是画图API.也就是说在这种方式下我们已经能一笔一划或者使用Graphic来画我们所需要的东西了,要画什么要显示什么都由我们自己控制. 这种方式根据环境还分为两种:一种就是使用普通View的canvas画图,还有一种就是使用专门的Surface

Android——Canvas类的使用

Canvas类(android.graphics.Canvas) Canvas类就是表示一块画布,你可以在上面画你想画的东西.当然,你还可以设置画布的属性,如画布的颜色/尺寸等.Canvas提供了如下一些方法: Canvas():创建一个空的画布,可以使用setBitmap()方法来设置绘制的具体画布: Canvas(Bitmap bitmap):以bitmap对象创建一个画布,则将内容都绘制在bitmap上,bitmap不得为null; Canvas(GL gl):在绘制3D效果时使用,与Op