矩阵是用来专门实现图形变形的,它与坐标一起配合使用,达到变形的目的。当图形上下文被创建完毕时,事实上也创建了一个默认的变换矩阵,如果不对这个矩阵进行修改,那么接下来绘制的图形将以画布的最左上角为坐标原点进行绘制图形,绘制出来的图形也不经过缩放变形处理,但是如果对这个变换矩阵进行修改,那么情况就不一样了。
transform方法
- context.transform(a, b, c, d, x, y);
在上节使用坐标变换进行图形变形中所提到的三个方法:
translate(x, y);
scale(x ,y);
rotate(angle);
它们都可以使用transform方法来代替,套用context.transform(a, b, c, d, x, y);中的六个参入如下:
translate(x, y);
scale(a, d);
rotate(b, c);//此方法其实只有一个参数,在这里为了便于理解且对应transform,故使用剩余的2个参数,放在这里,是为了告诉大家,这两个参数作用差不多,都是与旋转有关
代码案例
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
- <title>HTML5每日一练之Canvas标签的应用-矩阵变换</title>
- <script type="text/javascript">
- window.onload = function()
- {
- var canvas = document.getElementById("W3Cfuns_canvas");
- var context = canvas.getContext("2d");
- context.fillStyle = "#eee";
- context.fillRect(0, 0, 800, 600);
- var colors = ["#f00", "#f90", "#ff0", "#090", "#00f", "#0051a1", "#09f", "#0f0", "#0ff", "#000", "#900", "#090", "#009"];//定义颜色
- /*定义线宽*/
- context.lineWidth = 10;
- context.transform(1, 0, 0, 1, 100, 0);
- /*循环绘制圆弧*/
- for(var i = 0, j = colors.length; i < j; i++)
- {
- /*定义每次向下移动10个像素的变换矩阵*/
- context.transform(1, 0, 0.03, 1, 10, 10);
- /*设定颜色*/
- context.strokeStyle = colors;
- /*绘制圆弧*/
- context.beginPath();
- context.arc(280, 200, 150, 0, 2, true);
- context.stroke();
- }
- }
- </script>
- </head>
- <body>
- <canvas id="W3Cfuns_canvas" width="800" height="600"></canvas>
- </body>
- </html>
友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群