`

2011.10.12(2)——— android Matrix学习01

阅读更多
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.13(2)——— android Matrix学习03

    这篇博客“2011.10.13(2)——— android Matrix学习03”可能深入探讨了Matrix类的一些高级用法和实践技巧。虽然描述中没有提供具体信息,但从标题可以推断,这可能是系列教程的第三部分,继续深化对Matrix的理解。...

    从一条电线到建立一个网络视频.zip

    10 D10 网络基础——查看ARP和ping包.mp4 11 D11 网络基础——一步一步路由.mp4 12 D12 网络基础——TCP传输控制协议.mp4 13 D13 网络基础——TCP连接过程.mp4 14 D14 网络基础——可靠的数据传输.mp4 15 D15 网络...

    Android经典项目——AndroidStudio版本.zip

    Android经典项目——AndroidStudio版本.zip。 经典项目——AndroidStudio版本.zip经典项目——AndroidStudio版本.zip Android 经典项目 源码

    城市规划毕业设计——国际酒店景观设计(毕业论文+答辩PPT).zip

    城市规划毕业设计——国际酒店景观设计(毕业论文+答辩PPT).zip 城市规划毕业设计——国际酒店景观设计(毕业论文+答辩PPT).zip 城市规划毕业设计——国际酒店景观设计(毕业论文+答辩PPT).zip 城市规划毕业设计...

    JDK_1.7,amd64_ubuntu,安装包,直接下载安装即可完成1.7版本的SDK包。原生安装,不用配置环境变量,

    2,jdk-170.tar.gz ——————————JDK1.7deb包 3,switch_java.sh -------------------------java其它版本切换 4,check_java.sh———————————版本核对 注意:使用命令接口切换时,需要将自己配置的...

    python项目——Word助手.zip

    python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目...

    嵌入式成品项目-无线接收时钟.zip

    嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟.zip嵌入式成品项目——无线接收时钟...

    wavecom 模块常用AT指令手册.pdf

    AT+CPIN2** —— 输入PIN2。与AT+CPIN类似,但针对特定功能的二次安全验证。 **3. AT+CPINCPIN的剩余的尝试号码。** —— 显示剩余PIN输入次数,避免因多次错误尝试而锁定SIM卡。 **4. AT+CLCK** —— 设备锁。...

    C语言项目——MP3音乐播放器.zip

    C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——MP3音乐播放器.zip C语言项目——...

    python项目——DIY字符画.zip

    python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip python项目——DIY字符画.zip ...

    微信小程序——人脸检测(截图+源码).zip

    微信小程序——人脸检测(截图+源码).zip 微信小程序——人脸检测(截图+源码).zip 微信小程序——人脸检测(截图+源码).zip 微信小程序——人脸检测(截图+源码).zip 微信小程序——人脸检测(截图+源码).zip ...

    microsoftrootcertificateauthority2011.cer

    microsoftrootcertificateauthority2011.cer - 教程详情https://blog.csdn.net/Dream_Weave/article/details/125408661

    下载脚本 匹配对象数组中的每一个下载链接 批量下载到本地

    ————————————————————————————————————————————————————————————————————————————————————————————————————...

    C语言项目——企业员工管理系统.zip

    C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统.zip C语言项目——企业员工管理系统....

    城市规划毕业设计——尚上人家景观设计(毕业论文+答辩PPT+CAD图+设计图+效果图).zip

    城市规划毕业设计——尚上人家景观设计(毕业论文+答辩PPT+CAD图+设计图+效果图).zip 城市规划毕业设计——尚上人家景观设计(毕业论文+答辩PPT+CAD图+设计图+效果图).zip 城市规划毕业设计——尚上人家景观设计...

    微信小程序——移动端商城(截图+源码).zip

    微信小程序——移动端商城(截图+源码).zip 微信小程序——移动端商城(截图+源码).zip 微信小程序——移动端商城(截图+源码).zip 微信小程序——移动端商城(截图+源码).zip 微信小程序——移动端商城(截图+...

    微信小程序——图书管理系统(截图+源码).zip

    微信小程序——图书管理系统(截图+源码).zip 微信小程序——图书管理系统(截图+源码).zip 微信小程序——图书管理系统(截图+源码).zip 微信小程序——图书管理系统(截图+源码).zip 微信小程序——图书管理...

    微信小程序——手势解锁(截图+源码).zip

    微信小程序——手势解锁(截图+源码).zip 微信小程序——手势解锁(截图+源码).zip 微信小程序——手势解锁(截图+源码).zip 微信小程序——手势解锁(截图+源码).zip 微信小程序——手势解锁(截图+源码).zip ...

    小学语文一年级下册反义及量词练习大全.pdf

    这篇小学语文一年级下册的反义词及量词练习主要涵盖了语言学习的基础概念,旨在帮助学生掌握汉语中的基本词汇关系和量词的正确使用。 反义词是汉语词汇中非常重要的一部分,它指的是意思相反或相对的词语。在给出的...

    微信小程序——全屏动画滚动(截图+源码).zip

    微信小程序——全屏动画滚动(截图+源码).zip 微信小程序——全屏动画滚动(截图+源码).zip 微信小程序——全屏动画滚动(截图+源码).zip 微信小程序——全屏动画滚动(截图+源码).zip 微信小程序——全屏动画...

Global site tag (gtag.js) - Google Analytics