最近在使用Matrix进行绘图的操做。对Matrix的一些方法有了一些更深的体会,记下来,以便往后复习。 post
Matrix经常使用的方法: 队列
(一)变换方法: 图片
Matrix提供了translate(平移)、rotate(旋转)、scale(缩放)、skew(倾斜)四种操做,这四种操做的内部实现过程都是经过matrix.setValues(…)来设置矩阵的值来达到变换图片的效果。
Matrix的每种操做都有set、pre、post三种操做,set是清空队列再添加,pre是在队列最前面插入,post是在队列最后面插入。
pre方法表示矩阵前乘,例如:变换矩阵为A,原始矩阵为B,pre方法的含义便是A*B
post方法表示矩阵后乘,例如:变换矩阵为A,原始矩阵为B,post方法的含义便是B*A map
1.matrix.preScale(0.5f, 1);
2.matrix.preTranslate(10, 0);
3.matrix.postScale(0.7f, 1);
4.matrix.postTranslate(15, 0);
等价于:
translate(10, 0) -> scale(0.5f, 1) -> scale(0.7f, 1) -> translate(15, 0)
注意:后调用的pre操做先执行,然后调用的post操做则后执行。 方法
set方法一旦调用即会清空以前matrix中的全部变换,例如:
1.matrix.preScale(0.5f, 1);
2.matrix.setScale(1, 0.6f);
3.matrix.postScale(0.7f, 1);
4.matrix.preTranslate(15, 0);
等价于
translate(15, 0) -> scale(1, 0.6f) -> scale(0.7f, 1) 绘图
matrix.preScale (0.5f, 1)将不起做用。
(二)映射方法
Matrix提供了mapXXX的方法,用于获取经matrix映射以后的值。主要有:mapPoints,mapRects,mapVectors等方法。
这些方法你会使用到:在你须要记住matrix操做以后的数值的时候。好比:记住矩形旋转34°(rotate)以后四个点的坐标。(你能够尝试着本身计算,你会发现很复杂,还不精确)
须要注意的是,matrix的某些方法使用到中心点的时候,若是不设置,默认是以(0,0)为中心点的。
记下来,以避免忘记。