现在的位置: 首页 > 综合 > 正文

android-关于bitmap和canvas的一些注意的细节

2013年02月06日 ⁄ 综合 ⁄ 共 784字 ⁄ 字号 评论关闭


在创建新的控件或修改现有的控件时,我们都会涉及到重写控件或View的onDraw方法。

onDraw方法会传入一个Canvas对象,它是你用来绘制控件视觉界面的画布。

在onDraw方法里,我们经常会看到调用save和restore方法,它们到底是干什么用的呢?

❑ save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。

❑ restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。

save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。常用作做游戏时场景画布的移动撤销

  1.  // 防止出现Immutable bitmap passed to Canvas constructor错误  
  2.         Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),  
  3.                 R.drawable.apple).copy(Bitmap.Config.ARGB_8888, true);
     

BitmapFactory.decodeResource(getResources(), R.drawable.xiao).copy(Bitmap.Config.ARGB_8888, true);

注意:上面防止出现Immutable bitmap passed to Canvas constructor错误

原因是如果不用copy的方法,直接引用会对资源文件进行修改,而android是不允许在代码里修改res文件里的图片

转自:http://blog.csdn.net/gh102/article/details/6719624

【上篇】
【下篇】

抱歉!评论已关闭.