最近在使用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)爲中心點的。
記下來,以避免忘記。