当前位置: 首页 > 文档资料 > HTML5 入门教程 >

画布变换(Canvas Transform)

优质
小牛编辑
135浏览
2023-12-01

HTML5 canvas提供了允许直接修改转换矩阵的方法。 变换矩阵最初必须是身份变换。 然后可以使用转换方法对其进行调整。

Sr.No.方法和描述
1

transform(m11, m12, m21, m22, dx, dy)

此方法更改转换矩阵以应用参数给出的矩阵。

2

setTransform(m11, m12, m21, m22, dx, dy)

此方法将变换矩阵更改为参数给定的矩阵。

变换(m11,m12,m21,m22,dx,dy)方法必须将当前变换矩阵与以下描述的矩阵相乘 -

m11     m21     dx
m12     m22     dy
0       0       1

setTransform(m11, m12, m21, m22, dx, dy)方法必须将当前变换重置为单位矩阵,然后使用相同的参数调用transform(m11, m12, m21, m22, dx, dy)方法。

例子 (Example)

以下是一个使用transform()和setTransform()方法的简单示例 -

<!DOCTYPE HTML>
<html>
   <head>
      <script type = "text/javascript">
         function drawShape() {
            // get the canvas element using the DOM
            var canvas = document.getElementById('mycanvas');
            // Make sure we don't execute when canvas isn't supported
            if (canvas.getContext) {
               // use getContext to use the canvas for drawing
               var ctx = canvas.getContext('2d');
               var sin = Math.sin(Math.PI/6);   
               var cos = Math.cos(Math.PI/6);   
               ctx.translate(200, 200);   
               var c = 0;
               for (var i=0; i <= 12; i++) {
                  c = Math.floor(255/12 * i);
                  ctx.fillStyle = "rgb(" + c + "," + c + "," + c + ")";
                  ctx.fillRect(0, 0, 100, 100);
                  ctx.transform(cos, sin, -sin, cos, 0, 0);
               }
               ctx.setTransform(-1, 0, 0, 1, 200, 200);
               ctx.fillStyle = "rgba(100, 100, 255, 0.5)";
               ctx.fillRect(50, 50, 100, 100);
            } else {
               alert('You need Safari or Firefox 1.5+ to see this demo.');
            }
         }
      </script>
   </head>
   <body onload = "drawShape();">
      <canvas id = "mycanvas" width = "400" height = "400"></canvas>
   </body>
</html>