Matrix 中的post 和pre 和set 方法的区别 以及Canvas中的方法

post pre set 其实代表了Matrix 中方法变换的次序,pre是向前加入队列执行,post从后面加入队列执行。

举一些例子:

   matrix.preScale(2f,1f);  matrix.preTranslate(5f, 0f); matrix.postScale(0.2f, 1f);  matrix.postTranslate(0.5f, 0f);

方法执行的顺序为:

translate(5, 0) -> scale(2f, 1f) -> scale(0.2f, 1f) -> translate(0.5f, 0f)

  而matrix的set方法则会对先前的pre和post操作进行清除,而后再设置它的值,比如下列的方法调用: 

matrix.postTranslate(2f, 0f); matrix.preScale(0.2f, 1f);   matrix.setScale(1f, 1f); matrix.postScale(5f, 1f); matrix.preTranslate(0.5f, 0f); 方法执行的顺序为:

translate(0.5f, 0f) -> scale(1f, 1f) ->  scale(5f, 1).

    Canvas里scale, translate, rotate, concat方法都是pre方法,如果要进行更多的变换可以先从canvas获得matrix, 变换后再设置回canvas. 

你可能感兴趣的:(Matrix 中的post 和pre 和set 方法的区别 以及Canvas中的方法)