视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HTML5每日一练之Canvas标签的应用-绘制坐标变换图形
2020-11-27 15:16:18 责编:小采
文档
绘制图形的时候,我们可能经常会想到旋转图形,或者对图形使用变形处理,使用Canvas API的坐标轴变换处理功能,就能实现这种效果。

在计算机上绘制图形的时候,是以坐标点为基准来进行绘制的,默认情况下Canvas画布的最左上角对应于坐标轴的原点(0, 0)。前面我们所讲的所有利用Canvas API绘制出来的图形都是以画布最左上交为坐标轴圆点,并以像素为单位来进行绘制的。

如果对这个坐标轴进行改变,那么就可以实现图形的变换处理了。对坐标的变换处理有以下三种方式:


平移
使用图形上下文对象的translate方法移动坐标轴原点,该方法定义如下:

  • cantext.translate(x, y);
  • x:表示横坐标,也就是将坐标轴x从原点向【左】移动多少个单位,默认以像素为单位
    y:表示纵坐标,也就是将坐标轴y从原点向【下】移动多少个单位,默认以像素为单位


    扩大
    使用图形上下文对象的scale方法将图形放大,该方法的定义如下所示:

  • cantext.scale(x, y);
  • x:表示横坐标,也就是【水平方向】将图形放大的倍数
    y:表示纵坐标,也就是【垂直方向】将图形放大的倍数
    注:将图形缩小的时候,将这两个参数设置为0-1之间的小数就可以了,比如,0.5表示将图形缩小一半。


    旋转
    使用图形上下文对象的rotate方法将图形进行旋转,该方法的定义如下所示:

    cantext.rotate(angle);
    angle:
  • 是指旋转的角度,旋转的中心点是坐标轴的原点。旋转方向为顺时针进行,要想逆方旋转,只需要设置为负数即可。

  • 下面的案例,就是使用这三种坐标变换方式共同实现的下图效果:
    <!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 = "#d4d4d4";
     context.fillRect(0, 0, 400, 300);
     //绘制图形
     context.translate(200, 25);
     context.fillStyle = "rgba(0, 0, 255, 0.25)";
     for(var i = 0; i < 50; i++)
     {
     context.translate(25, 25);
     context.scale(0.95, 0.95);
     context.rotate(Math.PI / 10);
     context.fillRect(0, 0, 100, 50);
     }
     }
     </script>
     </head>
     
     <body>
     <canvas id="W3Cfuns_canvas" width="600" height="400"></canvas>
     </body>
    </html>

    下载本文
    显示全文
    专题