码迷,mamicode.com
首页 > 其他好文 > 详细

Canvas,Matrix的变换顺序

时间:2018-11-27 17:06:17      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:代码   调用   set   维护   变换   因此   先后   队列   倒序   

Canvas的几何变换是倒序的,Matrix是正序。

比如先平移在旋转:

canvas.rotate();

canvas.translate();

//translate先执行,rotate后执行

 

Matrix里面就好比维护者一个双端队列,当调用preXxx方法时,将该方法放入队列的顶端,(即每来一个preXxx方法就按照代码的书写顺序依次放入队列的顶端)

当调用setXxx方法时,清空当前队列,(如此说来,在setXxx之前调用的preXxx,postXxx都是无效的)

当调用postXxx方法时,将方法放入队列的末端,(即每来一个postXxx方法就按照代码的书写顺序依次放入队列的顶端)

 因此大家一般使用时的代码是:先调用setXxx,再调用 preXxx,postXxx,(这里preXxx方法与postXxx的代码书写的先后顺序无所谓,但是setXxx必须是在两个方法之前调用)

 

camera是三维变换

如果camera旋转需要图形左右对称,需要配合上 Canvas.translate(),在三维旋转之前把绘制内容的中心点移动到原点,即旋转的轴心,然后在三维旋转后再把投影移动回来:

Canvas,Matrix的变换顺序

标签:代码   调用   set   维护   变换   因此   先后   队列   倒序   

原文地址:https://www.cnblogs.com/krislight1105/p/10026486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!