Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Matrix的set,pre,post调用顺序详解大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_657_0@matrix调用一系列set,pre,post方法时,可视为将这些方法插入到一个队列。当然,按照队列中从头至尾的顺序调用执行。

其中pre表示在队头插入一个方法,post表示在队尾插入一个方法。而set表示把当前队列清空,并且总是位于队列的最中间位置。当执行了一次set后:pre方法总是插入到set前部的队列的最前面,post方法总是插入到set后部的队列的最后面。

例一:

Matrix m = new Matrix();
m.setRotate(45); 
m.setTranslate(80,80);

只有m.setTranslate(80,80)有效,因为m.setRotate(45);被清除.

例子二:

Matrix m = new Matrix();
m.setTranslate(80,80);
m.postRotate(45);

先执行m.setTranslate(80,80);@L_56_11@m.postRotate(45);

例子三:

Matrix m = new Matrix();
m.setTranslate(80,80);
m.preRotate(45);

先执行m.setTranslate(80,80);@L_56_11@m.preRotate(45);

例子四:

Matrix m = new Matrix();
m.preScale(2f,2f);  
m.preTranslate(50f,20f);  
m.postScale(0.2f,0.5f);  
m.postTranslate(20f,20f); 

执行顺序:@H_3_46@m.preTranslate(50f,20f)-->m.preScale(2f,2f)-->m.postScale(0.2f,0.5f)-->m.postTranslate(20f,20f)

注意:@H_3_46@m.preTranslate(50f,20f)比m.preScale(2f,2f)先执行,因为它查到了队列的最前端.

例子五:

Matrix m = new Matrix();
m.postTranslate(20,20);  
m.preScale(0.2f,0.5f);
m.setScale(0.8f,0.8f);  
m.postScale(3f,3f);
m.preTranslate(0.5f,0.5f);

执行顺序:@H_3_46@m.preTranslate(0.5f,0.5f)-->m.setScale(0.8f,0.8f)-->m.postScale(3f,3f)

注意:@H_3_46@m.setScale(0.8f,0.8f)清除了前面的m.postTranslate(20,20)和m.preScale(0.2f,0.5f);

以上这篇Matrix的set,pre,post调用顺序详解就是小编分享给大家的全部内容了,希望能给大家一个,也希望大家多多支持编程小技巧。

大佬总结

以上是大佬教程为你收集整理的Matrix的set,pre,post调用顺序详解全部内容,希望文章能够帮你解决Matrix的set,pre,post调用顺序详解所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:matrixpostpre