Android 图像绘制之Matrix 的使用

转载 2013年12月05日 13:17:11

Android 中拥有众多的图像绘制的函数,而功能最强大的就是 drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)

Android官方文档的描述为Draw the bitmap using the specified matrix.翻译成中文就是:用特定的矩阵来画图。而在其中最重要的参数就是 matrix

图片的平移:就是设定其中心位置的变换,我们可是使用这样的两个函数做到:

setTranslate(float dx, float dy)

postTranslate(float dx, float dy)

查看更多精彩图片

对于矩阵变换此处的前乘和后乘我们不做过多的介绍,我们按照一种固定的变化顺序来进行变化,故全部使用后乘来解决。即全为post开头的方法,而set开头的方法是对我们已经做过的变换进行重置。好吧,实例说明一切:

                    matrix.setTranslate(100, 100);

                    canvas.drawBitmap(bitmap,matrix,mPaint);

查看更多精彩图片

图片的旋转:同样的四个函数:

postRotate(float degrees)

postRotate(float degrees, float px, float py)

setRotate(float degrees)

setRotate(float degrees, float px, float py)

其中的pxpy是代表旋转的中心点的意思,如果不指定中心点的话,默认是(0,0)点进行旋转。

              matrix.setTranslate(100, 100);

                matrix.postRotate(90,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

                canvas.drawBitmap(bitmap,matrix,mPaint);

查看更多精彩图片

图片的缩放:

postScale(float sx, float sy)

postScale(float sx, float sy, float px, float py)

setScale(float sx, float sy, float px, float py)

setScale(float sx, float sy)

其中的参数的情况与图片旋转的情况一样,上实例:

                  matrix.setTranslate(100, 100);

                  matrix.postRotate(90,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

                  matrix.postScale(2,2,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

                  canvas.drawBitmap(bitmap,matrix,mPaint);

查看更多精彩图片

图片的反转:这个情况androidAPI里面没有给我们直接写出,但是我们可以使用图片缩放的函数来实现。看实例吧:

                  matrix.setTranslate(100, 100);

                  matrix.postRotate(90,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

                  matrix.postScale(2,2,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

                  matrix.postScale(-1f,-1f,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

                  canvas.drawBitmap(bitmap,matrix,mPaint);

查看更多精彩图片

基本上通过如上的变换就可以画出想要的图像了。

Android Paint、Canvas、Matrix使用讲解(一、Paint)

http://blog.csdn.net/tianjian4592/article/details/44336949 好了,前面主要讲了Animation,Animator 的使用,以及桌面...
  • jdsjlzx
  • jdsjlzx
  • 2015年03月24日 22:56
  • 14654

Android Matrix的用法总结

简介Matrix ,中文里叫矩阵,高等数学里有介绍。Android中的Matrix类是一个3x3的位置坐标矩阵,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。Matrix的数学原理首先了解下...
  • jdsjlzx
  • jdsjlzx
  • 2016年10月05日 23:45
  • 3317

Transform Matrix(矩阵变形)-Css3演示

Transform Matrix(矩阵变形)-Css3演示
  • henren555
  • henren555
  • 2013年09月20日 16:23
  • 1339

Android学习笔记进阶九之Matrix对称变换

网上很多的倒影特效实际上就是一个对称变换,在改变透明度即可。 Matrix对称变换包括很多种,有关于Y轴对称,关于X轴对称,关于y= -x对称等等。 1 关于Y轴对称 // 获取资源文件的引...
  • SJF0115
  • SJF0115
  • 2012年02月16日 13:10
  • 3770

[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理

讲述Android图像处理技术,主要操作包括:通过打开相册里的图片,使用Matrix对图像进行缩放、旋转、移动、对比度、亮度、饱和度操作,希望对大家有所帮助. 1.Matrix 图像空间变换,包括旋转...
  • Eastmount
  • Eastmount
  • 2014年10月26日 01:56
  • 8920

关于android中matrix变换

转自:http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html Android Matrix ...
  • shan987
  • shan987
  • 2016年06月20日 14:34
  • 564

android 从matrix获取处理过的图片的实际宽度

android 从matrix获取处理过的图片的实际宽度 //获取图片的实际宽度 private float getRealWidth() { ...
  • a7178077
  • a7178077
  • 2015年05月28日 14:55
  • 2001

Android中利用Matrix实现图片平移、缩放和旋转

Android中提供了drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)方法,可以传入Matrix对象实现对图片的各种操作。 Matrix的操...
  • baidu_34045013
  • baidu_34045013
  • 2016年05月06日 22:46
  • 1043

Android自定义View之二:Matrix初探(懒了,使用拿来主义了)

原文地址:http://java-admin.iteye.com/blog/792217 Matrix,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。    ...
  • chenjie19891104
  • chenjie19891104
  • 2011年04月11日 16:14
  • 13535

Android中图像变换Matrix的原理应用

第一部分 Matrix的数学原理 在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类。Android中的Matrix是一个3 x 3的矩阵,其内容如下: ...
  • linghu_java
  • linghu_java
  • 2014年02月12日 12:46
  • 7960
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 图像绘制之Matrix 的使用
举报原因:
原因补充:

(最多只允许输入30个字)