2011.10.12(2)——— android Matrix学习01
参考:
http://chroya.iteye.com/blog/712078
Matrix ,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。
首先介绍一下矩阵运算。加法和减法就不用说了,太简单了,对应位相加就好。图像处理,主要用到的是乘法 。下面是一个乘法的公式:
在 Android 里面, Matrix 由 9 个 float 值构成,是一个 3*3 的矩阵。如下图。
解释一下,上面的 sinX 和 cosX ,表示旋转角度的 cos 值和 sin 值,注意,旋转角度是按顺时针方向计算的。 translateX 和 translateY 表示 x 和 y 的平移量。 scale 是缩放的比例, 1 是不变, 2 是表示缩放 1/2 ,这样子。
下面看一个例子
package com.lp.matrix;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.view.View;
/**
* 一个简单的Matrix例子
*
* @author lp
* lipeng88213@126.com
* http://lipeng88213.iteye.com/
* 2011-10-12
* 上午11:29:19
*/
public class MatrixView extends View {
private Context _context;
private Bitmap _bitmap;
private Matrix _matrix = new Matrix();
public MatrixView(Context context) {
super(context);
this._context = context;
init();
}
private void init(){
//得到图片
_bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.a)).getBitmap();
//得到30°的sin和cos值
//顺时针是正数,我们这个是逆时针转动30°
float sinValue = (float)Math.sin(-Math.PI/6);
float cosValue = (float)Math.cos(-Math.PI/6);
//给Matrix赋值 按照固定的顺序
//
//cosX -sinX translateX
//sinX cosX translateY
//0 0 scale
//
//解释
//上面的 sinX 和 cosX ,表示旋转角度的 cos 值和 sin 值,注意,旋转角度是按顺时针方向计算的。
//translateX 和 translateY 表示 x 和 y 的平移量。
//scale 是缩放的比例, 1 是不变, 2 是表示缩放 1/2
_matrix.setValues(new float[]{
cosValue,-sinValue,100,
sinValue,cosValue,100,
0,0,2
});
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//canvas.drawBitmap(_bitmap, _matrix, null);
canvas.drawBitmap(_bitmap, 0, 0, null);
}
}
正常情况如下:
使用Matrix后 如下:
以左上角为顶点,缩放一半,逆时针旋转30度,然后沿x轴和y轴分别平移50个像素,
代码 里面写的是100,为什么是平移50呢,因为缩放了一半。
- 大小: 3.2 KB
- 大小: 1.7 KB
- 大小: 12.7 KB
- 大小: 8.3 KB
分享到:
相关推荐
这篇博客“2011.10.12(3)——— android Matrix学习02”可能深入探讨了Matrix类的使用方法,虽然具体的细节没有给出,但我们可以根据Matrix的基本功能和常见用法来展开讨论。 1. **Matrix类的介绍**:Matrix是...
这篇博客“2011.10.13(2)——— android Matrix学习03”可能深入探讨了Matrix类的一些高级用法和实践技巧。虽然描述中没有提供具体信息,但从标题可以推断,这可能是系列教程的第三部分,继续深化对Matrix的理解。...
标题中的“2011.10.09——— android ImageView放大缩小(2)”指的是一个关于Android平台中ImageView组件的优化技术,特别是如何处理图片的缩放问题。在Android应用开发中,ImageView是用于显示图像的常见组件,但...
计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机...
基于WXSS_WXML技术...序的开发——以西岭雪山为例_邹明荣.caj
这篇博客“2011.10.19——— android 显示一行内容并录制其音频”可能详细探讨了如何实现这个功能。虽然描述部分没有提供具体信息,但我们可以基于标签“源码”和“工具”来推测文章内容,以及从文件名...
▕ ▕ ▕—————————————————————————————————————— ▕ ▕——[13.27MB] 【NPSWF32调试版本_11.1.102.55_debug】 ▕ ▕ ▕——[856 B] flashplayer.xpt ▕ ▕ ▕——[3.90MB...
2918.D密钥分散管理系统——密钥确认算法实现 开题报告.doc
Android中文翻译组是一个非盈利性质的开源组织,至今已超过300人报名参与,关于翻译组的介绍,请看这里。欢迎更多朋友加入,发邮件到over140@gmail.com申请加入。 Android中文翻译组WIKI网站:...
安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android屏幕锁源码(源码).zip安卓app开发项目-实用源码——Android...
C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言...
2. F2:文本窗口切换——在绘图过程中,F2可以在绘图窗口和文本输入窗口之间切换。 3. F3:对象捕捉——开启或关闭对象捕捉功能,确保精确绘图。 4. F7:栅格——显示或隐藏栅格,用于辅助定位。 5. F8:正交——...
2. 人体的皮肤 ——————————————————— 第三周 3. 交通小博士 ——————————————————— 第五周 4. 吃瓜果要讲卫生 ———————————————— -- 第七周 5. 维护公共卫生 ...
设计内容及要求 1.有六间病房,每个病房装有呼叫按钮;...2.1号优先级别最高,1—6优先级别依次降低; 3.当有病人紧急呼叫时发出5S的呼叫声; 4.护士值班室有一个数码显示管,可显示呼叫的病房号。
C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版图书管理系统.zip C语言项目——窗体版...
教务管理系统——数据库课程设计mysql+java.zip教务管理系统——数据库课程设计mysql+java.zip教务管理系统——数据库课程设计mysql+java.zip教务管理系统——数据库课程设计mysql+java.zip教务管理系统——数据库...
错误更正...............................................................——建造合同...........................................................................................112企业会计准则——股份支付.....
Help And Manual v6.2.0.2603 的汉化包 该版本发布的程序只能选择英文版和德文版,本汉化包解压缩后放到安装文件夹,要使用汉化的界面,需每次启动程序前运行“汉化版.reg”文件清理一次注册表。...
12. **connect ... to/with** —— 连接...到... 13. **play the violin** —— 拉小提琴。 14. **a recording of sb. doing** —— 某人做某事的录音。 15. **be important for sb. to do sth.** —— 对某人来说做...
———————————————— 版权声明:本文为CSDN博主「MechMaster」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:...