当前位置: 移动技术网 > IT编程>移动开发>Android > Android 游戏开发之Canvas画布的介绍及方法

Android 游戏开发之Canvas画布的介绍及方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

3u8839,角色名字,贷款利率表2013

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对象

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网