android绘图中使用的矩阵是3x3的结构。
矩阵元素的功能:
先挑与平移有关的看。观察矩阵元素功能可知,如果绘制的图形平移到[x, y], 则只需要修改矩阵右上角的2个元素就可以了。
编写一个继承了view的TransView来验证,以下是onDraw()方法。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
//在点(50,50)绘制半径为5的红色正圆
canvas.drawCircle(50, 50, 5, paint);
//在点(200,200)绘制半径为15的红色正圆
canvas.drawCircle(200, 200, 15, paint);
Matrix matrix = new Matrix();
//与 matrix.setTranslate(200, 200)等价
{
float[] values = { 1, 0, 200,
0, 1, 200,
0, 0, 1 };
matrix.setValues(values);
}
Log.i("TransView", "" + matrix.toString());
canvas.save();
//画布在x轴移动200,y轴移动200后绘制半径为10的黑色正圆
canvas.setMatrix(matrix);
paint.setColor(Color.BLACK);
canvas.drawCircle(0, 0, 10, paint);
canvas.restore();
}
效果图:
从log看也可以验证之前的结论。
但从效果图中看,通过matrix绘制的图形坐标有偏移,比起直接在坐标(200, 200)绘制的正圆,y坐标小了70,这点十分奇怪,苦思不得其解,需要继续跟进。
分享到:
相关推荐
学习Matrix的对图像的处理可分为四类基本变换: Translate平移变换 Rotate 旋转变换 Scale缩放变换 Skew 错切变换 最好的demo
Matrix ,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。Matrix没有机构体,它必须初始化,然后通过reset方法和set方法来实现。 首先介绍一下矩阵运算。加法和减法就...
Android、Matrix、ImageView、Bitmap结合使用
matrix_gesture_detector MatrixGestureDetector检测到平移,缩放和旋转手势,并将它们组合到Matrix4对象中,该对象可由Transform小部件或低级CustomPainter代码使用。 您可以通过传递shouldTranslate , ...
矩阵变换,平移、旋转、缩放等操作: setMatrix(osg::Matrix::translate(x,y,z)) setMatrix(osg::Matrix::scale(a,b,c) setMatrix(osg::Matrix::rotate(osg::DegreesToRadians(度),x,y,z))
这个的demo主要介绍了使用Matrix实现图片的平移翻转拉伸等功能,希望能够帮助需要的同学.
将平移旋转缩放手势映射到Matrix4对象的手势检测.zip
jQuery Panzoom是一款非常实用的HTML DOM元素平移和缩放jQuery和...Panzoom利用CSS transforms 和 matrix函数来为浏览器进行硬件(GPU)加速,它可以支持任何元素的平移和缩放:图片、视频、iframe、canvas或文本等等。
为以下操作生成变换矩阵:平移,旋转,缩放,剪切,偏斜 将多个变换矩阵合并到一个由多个矩阵组成的矩阵中 双向使用字符串: parse , render 将转换矩阵应用于点 使用示例(ES6) import { scale , rotate , ...
自定义控件,用Camera与Matrix实现2D平移,3D旋转,百叶窗效果。
自定义控件,用Camera与Matrix实现2D平移,3D旋转,百叶窗效果。关键代码添加注释。
在Android中,为我们提供一些封装好的方法可以进行一些简单的图像操作,总共分为rotate(旋转),scale(缩放),translate(平移)和skew(倾斜)四种,每一种变换都提供了set, post和pre三种操作方式,除了translate,其他...
利用 CSS3 transform matrix 实现的物体旋转与平移的效果。
该库提供了一种使用简洁的API创建SO(3)和SE(3)矩阵转换的简便方法。 支持的转换包括任意顺序的局部和全局平移和旋转。 有关所有用例和示例,请参阅 README.md。
平移的操作很熟悉了,大部分大图的浏览都具有此功能,有些app还可以对图片进行旋转操作,QQ的大图浏览就可以对图片进行旋转操作,大家都知道对图片进行缩放,平移,旋转等操作可以使用Matrix来实现,Matrix就是一个3...
用于 JavaScript 的仿射变换矩阵 (3x3) 类,可执行各种变换,例如旋转、缩放、平移、倾斜、剪切、加、减、乘、除、逆、分解等(包括完整的 HTML 文档)。 它主要用于需要跟踪或创建变换并希望将其永久/手动应用于您...
根据从 3D 旋转、平移、缩放和 2D 倾斜构建一个 4x4 矩阵。 var compose = require ( 'css-mat4' ) var matrix = compose ( [ ] , { translate : [ 25 , 15 , 25 ] , rotate : [ 0 , Math . PI / 2 , - Math . ...
该类封装了平面坐标的矩阵运算的方法,包括正算、反算以及旋转参数、平移参数、错切变换、比例绽放参数的设置,请详见代码中的注释
android缩放/旋转图片Matrix代码 android缩放/旋转图片Matrix代码
Matrix提供了translate(平移)、rotate(旋转)、scale(缩放)、skew(倾斜)四种操作,这四种操作的内部实现过程都是通过matrix.setValues(…)来设置矩阵的值来达到变换图片的效果。 Matrix的每种操作都有set、pre、post...