zoukankan      html  css  js  c++  java
  • Matrix的set,pre,post调用顺序

    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);后执行m.postRotate(45);

    例子三:
    Matrix m = new Matrix();
    m.setTranslate(80, 80);
    m.preRotate(45);
    先执行m.setTranslate(80, 80);后执行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); 
    执行顺序:m.preTranslate(50f, 20f)-->m.preScale(2f,2f)-->m.postScale(0.2f, 0.5f)-->m.postTranslate(20f, 20f)
    注意: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);
    执行顺序:m.preTranslate(0.5f, 0.5f)-->m.setScale(0.8f, 0.8f)-->m.postScale(3f, 3f)
    注意:m.setScale(0.8f, 0.8f)清除了前面的m.postTranslate(20, 20)和m.preScale(0.2f, 0.5f); 

  • 相关阅读:
    算术运算符
    JAVA文件名命名规范
    JAVA构造函数的继承
    JAVA构造函数(方法)
    JAVA中的继承
    Linux下复制一个文件夹下文件到另外一个目录
    ISO-8601及GMT时间格式
    线程池执行任务后,返回值接收(转载)
    SpringBoot -> @Import引入配置类 @ImportResource引入xml配置文件
    Spring Boot与Spring Security整合后post数据不了,403拒绝访问
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3132802.html
Copyright © 2011-2022 走看看