android Matrix 使用

最近在使用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)为中心点的。

记下来,以避免忘记。

相关文章
相关标签/搜索