对图像的变换操作有translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)四种。Android里面的Matrix(android.graphics.Matrix,不是opgl.Matrix)提供了对应的四种操作的操作方法。其中对应每种操作都有三种接口setXX,preXX,postXX。setXX将使整个matrix的值为设置的值。preXX是将新的变换矩阵左乘原来的矩阵,而postXX是将新的变换矩阵右乘原来的变换矩阵。preXX的操作将在所有当前操作最后执行,而postXX的操作将在所有当前操作的最后执行。(这是因为设对给定的图像依次进行了基本变化F1、F2、F3…..、Fn,它们的变化矩阵分别为T1、T2、T3…..、Tn,图像复合变化的矩阵T可以表示为:T=TnTn-1…T1。

下面介绍几个基本函数的用法:

setRotate(floatdegrees)直接使图片旋转一定的角度,负数为向左旋转,正数为向右旋转。

setTranslate(floatdx,floatdy)使图片平移

setScale(floatsx,floatsy)使图片缩放

setSkew(floatkx,floatky)使图片倾斜

setRotate(floatdegrees,floatpx,floatpy)使图片以某一点为中心旋转

reset()是矩阵变为单位矩阵,即图片保持不变

对应上述的所有函数,都有相应的preXX和postXX版本,它们所对应的功能如上所述。下面是一个简单的例子。

setRotate(30,a,b)的功能是将图片以(a,b)为中心向右旋转30°。

下面可以用preXX来完成相应的功能:

matrix.setTranslate(a,b);

matrix.preRotate(30);

matrix.preTranslate(-a,-b);

从意义上来说可以理解为将图片平移(-a,-b),然后向右旋转30°,最后再将旋转后的图片平移(a,b)即可完成将图片以(a,b)向右旋转30°的功能。

更多相关文章

  1. android 网络下载图片 效率对比
  2. android byte[]与图片的转换
  3. android listview的divider分割线的宽度设置
  4. android常用类库简介
  5. Android(安卓)滑动效果基础篇(四)—— Gallery + GridView
  6. Android开发技术周报 Issue#54
  7. Android(安卓)高手进阶教程(十三)之----Android(安卓)数据库SQLi
  8. android studio查看genymotion模拟器上文件目录
  9. Android图像处理

随机推荐

  1. Android线程间通信机制——深入理解 Loop
  2. 如何修改Android自带浏览器的User Agent
  3. Android 系统开发(2)--Android Treble详细
  4. android 设置应用退出后不在运行列表中显
  5. android中做网络请求的几种方式
  6. Android(安卓)调用系统短信 - 群发
  7. Android发送邮件到指定邮箱(可带附件)
  8. Android使用Intent传值注意(传递Bean对象)
  9. Android自定义炫酷进度条(闪电能量条)
  10. Android 性能优化之内存优化