Html5-canvas-transform

提供:Dev Guides
移動先:案内検索

HTML5 Canvas-変換

HTML5キャンバスには、変換マトリックスを直接変更できるメソッドが用意されています。 変換行列は、最初は恒等変換でなければなりません。 その後、変換メソッドを使用して調整できます。

Sr.No. Method and Description
1

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

このメソッドは、変換マトリックスを変更して、引数で指定されたマトリックスを適用します。

2

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

このメソッドは、変換行列を引数で指定された行列に変更します。

transform(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)_メソッドを呼び出す必要があります引数。

以下は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>

上記の例では、次の結果が生成されます-