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)爲中心點的。

記下來,以避免忘記。

相關文章
相關標籤/搜索