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); 

  • 相关阅读:
    c++引用(reference)
    c++ 三目运算符功能增强
    C++ “新增”bool类型关键字
    C++ struct
    C++命名空间(namespace)
    基于python 实现KNN 算法
    Chrome 快捷键使用
    WOE(weight of evidence, 证据权重)
    python 命令运行环境下 ModuleNotFoundError: No module named 'Test'
    基于python 信用卡评分系统 的数据分析
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3132802.html
Copyright © 2011-2022 走看看