Matrix。中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。

在Android里面,Matrix由9个float值构成。是一个3*3的矩阵。

最好记住。例如以下图:

解释一下。上面的sinX和cosX。表示旋转角度的cos值和sin值,注意,旋转角度是按顺时针方向计算的。

translateX和translateY表示x和y的平移量。scale是缩放的比例,1是不变,2是表示缩放1/2,这样子。

在android.graphics.Matrix中有相应旋转的函数:

Matrix matrix = new Matrix();

matrix.setRotate(90);

在程序中输出矩阵:System.out.println("matrix:" + matrix.toString());

你会发现一样东西:

与上面的公式基本全然一样(android.graphics.Matrix採用的是浮点数。而我们採用的整数)。

  1. // 定义矩阵对象
  2. Matrix matrix = new Matrix();
  3. float[] values ={0.707f,-0.707f,0.0f,0.707f,0.707f,0.0f,0.0f,0.0f,1.0f};
  4. matrix.setValues(values);
  5. System.out.println("matrix:" + matrix.toString());
  6. //bmp.getWidth(), 500分别表示重绘后的位图宽高
  7. Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), 500,
  8. matrix, true);
  9. // 在画布上绘制旋转后的位图
  10. //放在坐标为0,200的位置
  11. canvas.drawBitmap(dstbmp, 0, 200, null);

以下介绍几个基本函数的使用方法:

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

setTranslate(float dx, float dy) 使图片平移

setScale(float sx, float sy) 使图片缩放

setSkew(float kx, float ky) 使图片倾斜

setRotate(float degrees, float px, float py) 使图片以某一点为中心旋转

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°的功能。

android矩阵具体解释的更多相关文章

  1. Android slidingmenu详细解释 滑动的优化

    Android slidingmenu 详细解释 性能优化 转载请注明:   http://blog.csdn.net/aaawqqq 简单介绍 SlidingMenu 是github 上Androi ...

  2. android矩阵详解

    android矩阵:http://www.360doc.com/content/11/1215/11/7635_172396706.shtml

  3. android动画具体解释一 概述

    动画和图形概述 Android 提供了大量的强大的API以应用于UI动画和绘制2D和3D图形.以下各节向你描写叙述了这些API的预览和系统能力以帮助你决定怎么才是达到你需求的最佳方法. 动画 Andr ...

  4. android动画具体解释二 属性动画原理

    property动画是一个强大的框架,它差点儿能使你动画不论什么东西. 你能够定义一个动画来改变对象的不论什么属性,不论其是否被绘制于屏幕之上. 一个属性动画在一定时间内多次改变一个属性(对象的一个字 ...

  5. Android Scroll具体解释(二):OverScroller实战

    作者: ztelur 联系方式:segmentfault,csdn.github 本文仅供个人学习,不用于不论什么形式商业目的,转载请注明原作者.文章来源.链接,版权归原文作者全部.  本文是andr ...

  6. android动画具体解释六 XML中定义动画

    动画View 属性动画系统同意动画View对象并提供非常多比view动画系统更高级的功能.view动画系统通过改变绘制方式来变换View对象,view动画是被view的容器所处理的,由于View本身没 ...

  7. android动画具体解释四 创建动画

    使用ValueAnimator进行动画 通过指定一些int, float或color等类型的值的集合.ValueAnimator 使你能够对这些类型的值进行动画.你需通过调用ValueAnimator ...

  8. 使用Ant打包Android应用具体解释——Ant使用解析

    上篇<使用Ant打包Android应用具体解释>描写叙述了使用Ant打包的流程,但非常多步骤并没有说明如此做的原因,本篇将从Ant方面来理解,下一篇从APK生成的流程来说明. APK包的生 ...

  9. 创建自定义视图在Android矩阵效果画布教程

    介绍 下面是一个快速教程,教你如何在Android中创建自定义视图.自定义视图创建一个矩阵雨效果. 本教程发布在http://www.androidlearner.com/. 背景 下面是关于如何工作 ...

随机推荐

  1. Bugtags 让你的 APP 测试轻松、上线安心

    Bug 管理系统再进化 Bugtags 的创业团队,在过去几年,做了很多方向的尝试——没错,是开发了很多 APP. 每一轮迭代,都会被繁琐的 APP 测试困扰:无休止的截屏上传电脑,无数次的开发与测试 ...

  2. MySQL插入性能优化

    目录 MySQL插入性能优化 代码优化 values 多个 一个事务 插入字段尽量少,尽量用默认值 关闭 unique_checks bulk_insert_buffer_size 配置优化 inno ...

  3. pythonl练习笔记——PythonNet 套接字socket

    1 套接字socket 1.1 套接字概述 套接字,一种网络通讯工具:用于进行网络间的通信,是一种特殊文件类型, 套接字,是一个通信链的句柄,用于描述IP地址和端口,实现向网络发出请求或应答网络请求. ...

  4. /proc/meminfo分析(一)

    本文主要分析/proc/meminfo文件的各种输出信息的具体含义. 一.MemTotal MemTotal对应当前系统中可以使用的物理内存. 这个域实际是对应内核中的totalram_pages这个 ...

  5. MyBatis generator 使用方式 小结

    1.  配置到 maven 中pom.xml 中 2.  手动运行 脚本文件 3. 基于 web 项目  http://git.oschina.net/redArmy/springboot-gener ...

  6. django 在建模时的一个手贱

    最近在写一个网站,在建立model的时候遇到了一些问题,最后找了好久才找到为什么. 一.django的model定义如下: from django.db import models # Create ...

  7. Zookeeper命令操作

    Zookeeper支持某些特定的四字命令字母与其的交互.他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息.用户在客户端可以通过telnet或nc向Zookeeper提交相应的命 ...

  8. Tomcat Jboss Glassfish 三种常见web容器比较

    一.缘由: 新公司平台是纯Java架构,有用到Java Web(JSP).Java 业务(EJB).Nginx..Websphere MQ.Mysql这样.大家知道java是跑在容器里的, 这里的业务 ...

  9. C# 使用Nlog记录日志到数据库

    [摘要]Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中.本文为你介绍C# 使用Nlog记录日志到数据库. Nlog是一个很不错的.NET ...

  10. C# 获取指定目录下所有文件信息

    /// <summary> /// 返回指定目录下所有文件信息 /// </summary> /// <param name="strDirectory&quo ...