位图的旋转也可以借助Matrix或者Canvas来实现。

通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最后用drawBitmap方法绘制到屏幕上,于是就实现了旋转操作。

下面例子中把原位图和经旋转处理的位图都绘制到屏幕上,目的是做一个对比。

  1. package xiaosi.bitmap;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. public class mianActivity extends Activity
  5. {
  6. private BitmapView bitmapView = null;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState)
  9. {
  10. super.onCreate(savedInstanceState);
  11. bitmapView = new BitmapView(this);
  12. setContentView(bitmapView);
  13. }
  14. }

BitmapView.Java

  1. package xiaosi.bitmap;
  2. import android.content.Context;
  3. import android.content.res.Resources;
  4. import android.graphics.Bitmap;
  5. import android.graphics.BitmapFactory;
  6. import android.graphics.Canvas;
  7. import android.graphics.Color;
  8. import android.graphics.Matrix;
  9. import android.view.View;
  10. public class BitmapView extends View
  11. {
  12. public BitmapView(Context context)
  13. {
  14. super(context);
  15. }
  16. //重写onDraw方法
  17. public void onDraw(Canvas canvas)
  18. {
  19. // 获取资源文件的引用res
  20. Resources res = getResources();
  21. // 获取图形资源文件
  22. Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.h);
  23. // 设置canvas画布背景为白色
  24. canvas.drawColor(Color.BLACK);
  25. // 在画布上绘制缩放之前的位图,以做对比
  26. //屏幕上的位置坐标是0,0
  27. canvas.drawBitmap(bmp, 0, 0, null);
  28. // 定义矩阵对象
  29. Matrix matrix = new Matrix();
  30. // 缩放原图
  31. matrix.postScale(1f, 1f);
  32. // 向左旋转45度,参数为正则向右旋转
  33. matrix.postRotate(-45);
  34. //bmp.getWidth(), 500分别表示重绘后的位图宽高
  35. Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), 500,
  36. matrix, true);
  37. // 在画布上绘制旋转后的位图
  38. //放在坐标为0,200的位置
  39. canvas.drawBitmap(dstbmp, 0, 200, null);
  40. }
  41. }

源代码下载:点击打开链接

最新文章

  1. C# 使用网易邮箱发送邮件
  2. 原生JS查找元素
  3. git如何放弃所有本地修改?
  4. DC/DC与LDO的差别
  5. 如何修改Oracle字符集
  6. Mybatis 实现传入参数是表名
  7. UVA 11600-Masud Rana(状压,概率dp)
  8. WebForm和Asp.Net MVC的理解
  9. openwrt源码下载地址(镜像)
  10. css浮动Float
  11. springboot 入门五-日志一
  12. MySQL的BlackHole引擎在主从架构中的作用
  13. JVM回收器与调优
  14. C# Emgu 类型转换
  15. 1.MySQL(一)
  16. WEB实现单元格合并
  17. day01-计算机原理与操作系统
  18. python的set处理二维数组转一维数组
  19. Intellij dea 注释行如何自动缩进?
  20. stl中char 与wchar 的转换

热门文章

  1. java9新特性-5-Java的REPL工具: jShell命令
  2. java连接操作Oracle
  3. Ajax的几种形式 和使用情况
  4. jquery一些总结
  5. codeforces 400 D Dima and Bacteria【并查集 Floyd】
  6. 紫书 习题 10-13 UVa 11526(打表找规律+分步枚举)
  7. 【转】黄聪:HtmlAgilityPack教程案例
  8. COGS——T1588. [USACO FEB04]距离咨询
  9. modSecurity规则学习(八)——防止CC攻击
  10. jFinal 关联数据库操作