canvas学习20之transform学习

我们已经学习过canvas的位移,移动canvas原点的位置,translate(x,y)。canvas的旋转rorate(angle),canvas的缩放,scale(x,y)。

今天,我们学习一个更加高级,也是更难的用法,transform(m11,m12,m21,m22,dx,dy)。感觉这个方法是前面几个方法的基础。

  • transform方法中参数的含义

    m11: 水平方向的缩放

    m12: 水平方向的倾斜偏移

    m21: 竖直方向的倾斜偏移

    m22:竖直方向的缩放

    dx:水平方向的移动

    dy:垂直方向的移动

  • 和已学过变形方法的对应关系

    1.translate:在参数含义中我们看到,dx,dy是进行移动。所以,当其它四个值保持不变,改变dx,dy时,就相当于translate方法。

    2.scale:m11和m22控制缩放。所以当其它参数保持不变时,只改变m11,m22时,就相当于rotate。

    3.rotate:m12和,m21代表偏移量,所以当其它参数保持不变时,只改变m12,m22时就相当于rotate方法。

如果transform仅仅就是将其它三个方法集合起来,那就有点不值得了。既然搞出来这么一个方法,肯定需要搞点事情出来,不然岂不是在这世上白活一遭。

开玩笑呢,transform方法确实有大用,那就是矩阵转换。它还有setTransform和resetTransform两个方法。setTransform这个方法会将当前的变形矩阵重置为单位矩阵,重置当前变形为单位矩阵。

说实话,这个矩阵变化我还是没怎么看懂,看了张鑫旭的[理解CSS3 transform中的Matrix(矩阵)](https://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-%E7%9F%A9%E9%98%B5/),现在是似懂非懂。所以先不讲,等我弄明白了再来补充这一篇。也建议大家去看一下。