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. 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值