前面一篇博文Android画图之Bitmap(一) 介绍了简单的把 Bitmap 画到屏幕上,以及缩放 Bitmap 以铺满屏幕。对 Bitmap 的操作还有很多。比如截取 Bitmap 的部分区域,可以使用

mBitmap = Bitmap.createBitmap(bmp, 100, 100, 120, 120);

这句代码从 bmp (100,100) 处截取 120*120 像素区域放到新的 Bitmap 中。

缩放一个 Bitmap ,前面一篇已经涉及到了,可以用 Bitmap.createScaledBitmap() 方 法根据给定的 Bitmap 创建 一个新的,缩放后的 Bitmap

Bitmap mBitmap = Bitmap.createScaledBitmap(bmp, mScreenWidth, mScreenHeight, true);

其中 mScreenWidth mScreenHeight 是屏幕的宽度和高度,这里就将 bmp 拉伸到整个屏幕。

每次 createBitmap ,都会分配新的内存,带来资源的 消耗,所以用 Bitmap createBitmap 虽然简单方便,但是不是最优方 法。介绍一个比较好点的方法,不用创建新的 Bitmap ,用 Canvas 在画的时候直接缩放或者剪切。

canvas.drawBitmap(mBitmap, null, new Rect(0, 0, 200, 200), null);

这里的 Rect 对象表示一个矩形区域,从 (0,0) (200,200) 之间的矩形区域。这段代码将把 mBitmap 缩放并绘制到屏幕上的 (0,0) (200,200) 之间的区域。

这个方法还有第二个参数我给的是 null ,其实这个参数也是个 Rect 对象,表示源 Rect 。把图片的某个区域拿出来画到屏幕的指定区域。

canvas.drawBitmap(mBitmap, new Rect(100, 100, 300, 300), new Rect(100, 100, 200, 200), null);

这里将 mBitmap (100,100) (300,300) 区域拿出来,自动缩放并画到屏幕的 (100,100) (200,200) 区域。

对于 Bitmap 的处理,上面介绍的 是最简单的两种,平移和缩放。而要是需要更复杂的处理,比如旋转和倾斜,就得使用 Matrix 了。下面几篇将介绍 Matrix 在画图中的使用。

更多相关文章

  1. android图片涂鸦,具有设置画笔,撤销,缩放移动等功能(一)
  2. Android(安卓)获取屏幕尺寸与密度
  3. 如何在Android中获知屏幕打开或者关闭
  4. Android之常见问题集锦
  5. android studio 如何修改app名字、修改app图标
  6. Android中对于Bitmap的处理
  7. 关于Android如何禁止屏幕旋转刷新界面
  8. Android(安卓)PowerManagerService分析
  9. Android(安卓)锁屏功能

随机推荐

  1. MySQL创建数据表并建立主外键关系详解
  2. mysql语句查询用户权限过程详解
  3. 基于python的mysql复制工具详解
  4. 为什么说MySQL单表数据不要超过500万行
  5. MySQL5.7.23解压版安装教程图文详解
  6. python 连接数据库mysql解压版安装配置及
  7. 简单了解标准SQL的update语句三种用法
  8. Spark SQL常见4种数据源详解
  9. MySQL全局锁和表锁的深入理解
  10. 详解MySQL索引原理以及优化