Computer >> Máy Tính >  >> Lập trình >> Javascript

Ma trận chuyển đổi canvas HTML5


HTML5 canvas cung cấp các phương thức cho phép sửa đổi trực tiếp ma trận chuyển đổi. Ma trận biến đổi ban đầu phải là phép biến đổi nhận dạng. Sau đó, nó có thể được điều chỉnh bằng các phương pháp chuyển đổi.

T ransform (m11, m12, m21, m22, dx, dy) phương pháp phải nhân ma trận chuyển đổi hiện tại với ma trận được mô tả bởi -

m11 m21 dx
m12 m22 dy
 0   0  1

setTransform (m11, m12, m21, m22, dx, dy) phương thức phải đặt lại biến đổi hiện tại thành ma trận nhận dạng, sau đó gọi phương thức biến đổi (m11, m12, m21, m22, dx, dy) với cùng các đối số.

<!DOCTYPE HTML>
<html>
   <head>
      <script>
         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>