手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android 游戏开发之Canvas画布的介绍及方法
Android 游戏开发之Canvas画布的介绍及方法
摘要:Canvas,在英语中,这个单词的意思是帆布。在Android中,则把Canvas当做画布,只要我们借助设置好的画笔(Paint类)就可以在...

Canvas,在英语中,这个单词的意思是帆布。在Android中,则把Canvas当做画布,只要我们借助设置好的画笔(Paint类)就可以在画布上绘制我们想要的任何东西;另外它也是显示位图(Bitmap类)的核心类。随用户的喜好,Canvas还可设置一些关于画布的属性,比如,画布的颜色、尺寸等。Canvas提供了如下一些方法:

Canvas(): 创建一个空的画布,可以使用setBitmap()方法来设置绘制具体的画布。

Canvas(Bitmap bitmap): 以bitmap对象创建一个画布,则将内容都绘制在bitmap上,因此bitmap不得为null。

Canvas(GL gl): 在绘制3D效果时使用,与OpenGL相关。

drawColor: 设置Canvas的背景颜色。

setBitmap: 设置具体画布。

clipRect: 设置显示区域,即设置裁剪区。

isOpaque:检测是否支持透明。

rotate: 旋转画布

translate:移动画布

scale:缩放画布

setViewport: 设置画布中显示窗口。

skew: 设置偏移量。

restore: 用来恢复上一次save之前的状态

save:用来保存Canvas的当前状态

注意: save方法、restore方法一般是成对出现的,save方法可多于restore方法,但restore方法不能多于save方法

上面列举了几个常用的方法。在游戏开发中,我们可能需要对某个精灵执行旋转、缩放和一些其它操作。我们可以通过旋转画布来实现,但是旋转画布时会旋转画布上的所有对象,而我们只是需要旋转其中的一个,这时就需要用到save 方法来锁定需要操作的对象,在操作之后通过 restore 方法来解除锁定。

得到canvas画布对象

复制代码 代码如下:

Canvas canvas = getHolder().lockCanvas();

画布的一些属性和方法以及一些应用

复制代码 代码如下:

if (canvas != null) {

//----设置画布绘图无锯齿

canvas.setDrawFilter(pfd);

//----利用填充画布,刷屏

canvas.drawColor(Color.BLACK);

//----绘制文本

canvas.drawText("drawText", 10, 10, paint);

//----绘制像素点

canvas.drawPoint(10, 20, paint);

//----绘制多个像素点

canvas.drawPoints(new float[] { 10, 30, 30, 30 }, paint);

//----绘制直线

canvas.drawLine(10, 40, 50, 40, paint);

//----绘制多条直线

canvas.drawLines(new float[] { 10, 50, 50, 50, 70, 50, 110, 50 }, paint);

//----绘制矩形

canvas.drawRect(10, 60, 40, 100, paint);

//----绘制矩形2

Rect rect = new Rect(10, 110, 60, 130);

canvas.drawRect(rect, paint);

canvas.drawRect(rect, paint);

//----绘制圆角矩形

RectF rectF = new RectF(10, 140, 60, 170);

canvas.drawRoundRect(rectF, 20, 20, paint);

//----绘制圆形

canvas.drawCircle(20, 200, 20, paint);

//----绘制弧形

canvas.drawArc(new RectF(150, 20, 200, 70), 0, 230, true, paint);

//----绘制椭圆

canvas.drawOval(new RectF(150, 80, 180, 100), paint);

//----绘制指定路径图形

Path path = new Path();

//设置路径起点

path.moveTo(160, 150);

//路线1

path.lineTo(200, 150);

//路线2

path.lineTo(180, 200);

//路径结束

path.close();

canvas.drawPath(path, paint);

//----绘制指定路径图形

Path pathCircle = new Path();

//添加一个圆形的路径

pathCircle.addCircle(130, 260, 20, Path.Direction.CCW);

//----绘制带圆形的路径文本

canvas.drawTextOnPath("PathText", pathCircle, 10, 20, paint);

}

注:以上代码参考自《Android游戏编程之从零开始》

得到自定义图片宽高的bitmap(参数一:上下文对象,参数二:资源ID,参数三:自定义宽度,参数四:自定义高度)

复制代码 代码如下:

public static Bitmap loadBallView(Context context,int resId,int width,int height) {

Resources resources = context.getResources();

Drawable image = resources.getDrawable(resId);

Bitmap bitmap = Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

image.setBounds(0, 0, width,height);

image.draw(canvas);

return bitmap;

}

利用canvas绘制bitmap

复制代码 代码如下:

Bitmap bitmap = loadBallView(context,R.drawable.image,100,100);

Paint paint = new Paint();

canvas.drawBitmap(bitmap, startX, startY, paint); //参数一:bitmap资源,参数二:起始X坐标,参数三:起始Y坐标,参数四:画笔paint对象

【Android 游戏开发之Canvas画布的介绍及方法】相关文章:

解析Android开发优化之:对Bitmap的内存优化详解

Android中库项目的使用方法图文介绍

Android实现长按back键退出应用程序的方法

Android开发笔记之:Dialog的使用详解

Android 内存泄漏的几种可能总结

Android开发 旋转屏幕导致Activity重建解决方法

android开发之欢迎界面的小例子

android 浏览器之多窗口方案详解

Android开发之XML文件解析的使用

Android开发笔记之:返回键的复写onBackPressed()介绍

精品推荐
分类导航