java.lang.Object |
↳ |
|
android.graphics.Matrix
|
Public Constructors
|
Matrix()
Create an identity matrix
|
|
Matrix(Matrix src)
Create a matrix that is a (deep) copy of src
|
|
旋转
void |
setRotate(float degrees)
Set the matrix to rotate about (0,0) by the specified number of degrees.
|
void |
setRotate(float degrees, float px, float py)
Set the matrix to rotate by the specified number of degrees, with a pivot point at (px, py).
|
围绕点px, py 旋转 degrees度, 如果没设置坐标,默认以0,0点旋转.
例子: setRotate(45, 180, 120);
缩放,翻转
void |
setScale(float sx, float sy)
Set the matrix to scale by sx and sy.
|
void |
setScale(float sx, float sy, float px, float py)
Set the matrix to scale by sx and sy, with a pivot point at (px, py).
|
以点px,py为原点缩放 >=0 1为正常大小
如果是负数,图形就会翻转
如果没设置原点坐标,默认以0,0点缩放(如果发现图片不见了,检查一下是不是翻转出了屏幕)
例子:setScale(-0.5f, 1,180, 120); //左右翻转并缩放到一半大小
倾斜
void |
setSkew(float kx, float ky, float px, float py)
Set the matrix to skew by sx and sy, with a pivot point at (px, py).
|
void |
setSkew(float kx, float ky)
Set the matrix to skew by sx and sy.
|
以点px,py为原点倾斜如果没有设置原点,则以0,0点为原点.
例子:setSkew(0, 1, 180, 120); //Y 方向拉伸
坐标
void |
setTranslate(float dx, float dy)
Set the matrix to translate by (dx, dy).
|
是图片移动到某一个位置
注意
Matrix中带有pre, post的函数需要考虑先后顺序
例如:想要旋转45度,然后平移到100,100的位置需要
Matrix matrix = new Matrix();
matrix.postRotate(45);
matrix.postTranslate(100, 100);
或者
Matrix matrix = new Matrix();
matrix.setTranslate(100, 100);
matrix.preRotate(45);
这就要考虑到矩阵的前乘和后乘了,不然的话你会发现可能坐标位置不是你想要的,可能图像都不见了.
如果在复杂一些,需要选择,缩放,倾斜同时起作用,并且还要设置坐标到屏幕指定位置你会发现很麻烦,需要自己计算出各个方法的参数,然后考虑调用的先后顺序.
但这里有一种更简便的方法,叫系统帮我们计算
boolean |
setConcat(Matrix a, Matrix b)
Set the matrix to the concatenation of the two specified matrices, returning true if the the result can be represented.
|
这个方法的意思是帮我们把两个 Matrix对象计算并连接起来.
这样的话我们就可以这样使用了
Matrix mRotateMatrix = new Matrix(); //控制旋转
Matrix mScaleMatrix = new Matrix(); //控制缩放
Matrix mSkewMatrix = new Matrix(); //控制倾斜
Matrix mPosMatrix = new Matrix(); //控制坐标
Matrix mMatrix = new Matrix(); //合并
mMatrix.setConcat(mRotateMatrix, mScaleMatrix);
mMatrix.setConcat(mMatrix, mSkewMatrix);
mMatrix.setConcat(mMatrix, mPosMatrix);
canvas.drawBitmap(mBitmap, mMatrix, mPaint);
注意:合并的第一步不能直接用mMatrix自身去连接其他的Matrix,我试过几次结果图像又飞了,大家再试试
例子:
同时设置
setRotate(45, 180, 120);
setScale(-0.5f, 1,180, 120); //左右翻转并缩放到一半大小
setSkew(0, 1, 180, 120); //Y 方向拉伸
- 大小: 37 KB
- 大小: 38.6 KB
- 大小: 23.9 KB
- 大小: 33.8 KB
- 大小: 24.4 KB
分享到:
相关推荐
`onDraw()`方法中,我们使用`canvas.drawBitmap()`方法,传入Bitmap和Matrix对象,使得图像按照设定的Matrix进行变换。 Matrix的乘法操作在图像变换中非常关键,因为多个变换可以通过矩阵乘法组合成一个单一的变换...
当我们需要对Bitmap应用Matrix变换时,可以使用Bitmap.createBitmap方法,它接受原始Bitmap、新的宽度和高度以及Matrix作为参数。Matrix会根据给定的变换规则对图像进行处理,生成一个新的Bitmap。例如,以下代码...
完成变换设置后,我们可以使用Bitmap的createBitmap()静态方法,传入原始Bitmap、宽度、高度、配置和Matrix来创建一个新的变形后的Bitmap。例如: ```java Bitmap transformedBitmap = Bitmap.createBitmap( ...
Matrix类还提供了一系列基本操作方法,例如equals(), hashCode(), toString(), toShortString()等。这些方法用来比较两个矩阵的数值是否相同、获取矩阵的哈希值、将矩阵转换为字符串等。 对于数值操作,Matrix提供...
本文将深入探讨C# DataMatrix.net的使用方法,以及如何通过源码学习其工作原理。 首先,让我们了解DataMatrix的基本概念。DataMatrix是由国际自动识别制造商协会(AIM)制定的一种二维矩阵码,它采用了错误纠正编码...
1. **创建条码对象**:使用`JPGraph\Barcode\BarcodeFactory`类的静态方法`create()`创建DataMatrix条码对象。例如,`$barcode = BarcodeFactory::Create('datamatrix', '1234567890');`,其中第一个参数是条码类型...
开发者可以通过这个项目了解如何使用这些库来实现DataMatrix二维码的读取,并可以根据实际需求选择最适合的解码方式。 在实际应用中,选择解码库时需要考虑的因素包括解码速度、容错能力、内存占用、是否支持特定的...
Matrix对象需要与Transform对象配合使用才能在舞台上产生实际效果。Transform对象是针对DisplayObject的,它可以访问和修改对象的矩阵属性。以下是一个简单的示例,展示了如何创建Matrix并应用到MovieClip上: ```...
DataMatrix 码是一种二维码,zxing 是一个 Java 库,用于解析和生成各种二维码。 在 zxing 源码中,DataMatrix 码部分的代码结构与 QR 码基本相同。Detector 的功能是从原始图像中找出符号码的部分,并进行透视转换...
在Android开发中,图片处理是一项常见的任务,而利用Matrix进行图片缩放则是一种灵活且高效的方法。Matrix是Android图形库中的一个关键类,它允许我们对图像进行旋转、平移、缩放等变换操作。本篇文章将深入探讨如何...
Canvas是Android提供的绘制图形的接口,我们可以通过调用Canvas的`drawBitmap`或`drawRect`等方法绘制图形,然后调用`Canvas.save()`保存当前状态,对Matrix进行一系列变换,最后使用`Canvas.restore()`恢复到保存的...
综上所述,这段代码展示了如何使用C++的运算符重载功能来实现一个功能齐全的二维方阵类,包括基本的矩阵操作如加法、减法、乘法和转置等。这不仅提高了代码的可读性和可维护性,也使得矩阵的操作更加直观和方便。
下面我们将深入探讨这个主题,包括Label控件的基本使用、矩阵布局的实现以及可能遇到的问题与解决方案。 首先,Label是Delphi中常用的一种可视化组件,它用于显示静态文本信息。在Delphi集成开发环境(IDE)中,你...
当用户拖动图片时,我们需要捕获ACTION_MOVE事件,获取当前手指位置,并与上一次的位置进行比较,计算出平移量,然后使用Matrix.setTranslate()方法更新图片的位置。 4. **避免OOM错误** Android系统为每个应用...
4. **乘法**:矩阵乘法需要更复杂的算法,如Strassen算法或高斯-约旦消元法,这里通常使用传统的行乘列方法,先将矩阵分解为行,然后对每行的元素与另一矩阵的列进行乘法并累加。 5. **矩阵求逆**:逆矩阵是矩阵的一...
在数学和计算机科学中,矩阵转置是一个基本概念,它涉及到将矩阵的行转换为列或列转换为行。这个过程对于线性代数的理解至关重要,因为它涉及到许多重要的运算和性质。标题“Matrix Transpose_matrixtransposition_...
通过学习以上内容,并结合"Introduction to MATLAB"中的实例和练习,初学者将能够逐步掌握MATLAB的基本使用方法,为后续深入研究打下坚实基础。不断实践和探索,将使你在MATLAB的世界中游刃有余。
在实际开发中,我们可能需要加载图片到Bitmap对象,然后创建一个Matrix实例,对Bitmap进行操作,最后使用ImageView的setImageMatrix()方法设置Matrix,以展示变换后的效果。 总结一下,"matrix 图片旋转 居中"的...
### Datalogic MATRIX 210N 调试手册知识点总结 #### 一、产品概述 Datalogic Matrix 210N ...通过以上知识点总结,我们对Datalogic Matrix 210N 的功能特性和使用方法有了全面了解,有助于更好地应用于实际工作中。