`

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.12(3)——— android Matrix学习02

    这篇博客“2011.10.12(3)——— android Matrix学习02”可能深入探讨了Matrix类的使用方法,虽然具体的细节没有给出,但我们可以根据Matrix的基本功能和常见用法来展开讨论。 1. **Matrix类的介绍**:Matrix是...

    2011.10.13(2)——— android Matrix学习03

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

    2011.10.09——— android ImageView放大缩小(2)

    标题中的“2011.10.09——— android ImageView放大缩小(2)”指的是一个关于Android平台中ImageView组件的优化技术,特别是如何处理图片的缩放问题。在Android应用开发中,ImageView是用于显示图像的常见组件,但...

    2011.10.19——— android 显示一行内容并录制其音频

    这篇博客“2011.10.19——— android 显示一行内容并录制其音频”可能详细探讨了如何实现这个功能。虽然描述部分没有提供具体信息,但我们可以基于标签“源码”和“工具”来推测文章内容,以及从文件名...

    com.apple.amp.itmstransporter——Simpsons.zip

    Xcode11,Transporter上传卡在——“正在验证APP-正在通过App Store进行认证...” 下载此文件,把解压后的"com.apple.amp.itmstransporter"目录放到"/用户/你的电脑登录账号名/资源库/Caches/"目录下,覆盖你原有的...

    运动休闲娱乐——运势测算行业SOP.pdf

    运动休闲娱乐——运势测算行业SOP.pdf 运动休闲娱乐——运势测算行业SOP.pdf 运动休闲娱乐——运势测算行业SOP.pdf 运动休闲娱乐——运势测算行业SOP.pdf 运动休闲娱乐——运势测算行业SOP.pdf 运动休闲娱乐——运势...

    嵌入式成品项目-2代身份证识别方案.zip

    嵌入式成品项目——2代身份证识别方案.zip嵌入式成品项目——2代身份证识别方案.zip嵌入式成品项目——2代身份证识别方案.zip嵌入式成品项目——2代身份证识别方案.zip嵌入式成品项目——2代身份证识别方案.zip...

    Android中文翻译组——Android开发者指南(2).chm

    Android中文翻译组是一个非盈利性质的开源组织,至今已超过300人报名参与,关于翻译组的介绍,请看这里。欢迎更多朋友加入,发邮件到over140@gmail.com申请加入。 Android中文翻译组WIKI网站:...

    C语言项目——超级万年历.zip

    C语言项目——超级万年历.zip C语言项目——超级万年历.zip C语言项目——超级万年历.zip C语言项目——超级万年历.zip C语言项目——超级万年历.zip C语言项目——超级万年历.zip C语言项目——超级万年历.zip ...

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

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

    C语言项目——通讯录管理系统.zip

    C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言项目——通讯录管理系统.zip C语言...

    微信小程序——新浪读书(截图+源码).zip

    微信小程序——新浪读书(截图+源码).zip 微信小程序——新浪读书(截图+源码).zip 微信小程序——新浪读书(截图+源码).zip 微信小程序——新浪读书(截图+源码).zip 微信小程序——新浪读书(截图+源码).zip ...

    android.hardware.camera2自定义相机

    在Android平台上,`android.hardware.camera2`是官方提供的高级相机API,它提供了更精细的控制和更高的灵活性,使得开发者能够创建具有专业级别的自定义相机应用。这个API在Android 5.0(API级别21)引入,替代了...

    microsoftrootcertificateauthority2011.cer

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

    天正建筑CAD快捷键-较全常用.doc

    2. F2:文本窗口切换——在绘图过程中,F2可以在绘图窗口和文本输入窗口之间切换。 3. F3:对象捕捉——开启或关闭对象捕捉功能,确保精确绘图。 4. F7:栅格——显示或隐藏栅格,用于辅助定位。 5. F8:正交——...

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

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

    Android中文翻译组——Android中文API——android.widget合集(中)

    `Android中文翻译组——Android中文API——android.widget合集(中).chm`文件很可能是这个主题的中文参考手册,包含了这些控件的详细解释、使用示例和API文档,对于初学者来说是一份宝贵的资源。建议读者仔细阅读并...

    八路数电电路——病房呼叫系统.ms10 八路数电电路——病房呼叫系统(1优先级最高)_rezip1.zip

    设计内容及要求 1.有六间病房,每个病房装有呼叫按钮;...2.1号优先级别最高,1—6优先级别依次降低; 3.当有病人紧急呼叫时发出5S的呼叫声; 4.护士值班室有一个数码显示管,可显示呼叫的病房号。

    2021-2022年收藏的精品资料企业会计准则制度大全.doc

    错误更正...............................................................——建造合同...........................................................................................112企业会计准则——股份支付.....

Global site tag (gtag.js) - Google Analytics