《Html5 实例》阅读笔记(二)

作者: ghwaphon | 来源:发表于2016-10-06 20:40 被阅读324次
    1. MDC canvas 教程 可以查看到 canvas 的更多信息。

    2. 可以在 Canvas 中绘制有一定透明度的图形,如下所示。
      <script>
      var canvas = document.getElementById("mycanvas");
      var mycontext = canvas.getContext("2d");

           mycontext.beginPath();
           mycontext.arc(40, 40, 25, 0, Math.PI * 2, true);
           mycontext.closePath();
           mycontext.fillStyle = "#f00";
           mycontext.fill();
      
           mycontext.beginPath();
           mycontext.arc(70, 40, 25, 0, Math.PI * 2, true);
           mycontext.closePath();
           mycontext.fillStyle = "rgba(0,0,255,0.5)";
           mycontext.fill();
       </script>
      

      绘制的效果如下所示

      demo1.png
      arc(x坐标,y坐标,半径,起始角度,终点角度,顺时针或逆时针绘制)

    关于透明度的使用,可以参见 [styles and colors](https://developer.mozilla.org /en-US/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors) 。

    1. 有三种方法设置 canvas 的大小。一种是直接给 canvas 指定 widthheight 属性
      <canvas width="200" height="200" id="mycanvas"></canvas>
      其它两种都是通过 JavaScript 控制的
      // 第一种
      mycontext.width = 200;
      mycontext.height = 200;

       //第二种
       mycontext.setAttribute("width", "200");
       mycontext.setAttribute("height", "200");
      

    当然,你可能想到,我直接利用 CSS 改变它的大小不是一样的吗?其实不是这样的,无论你是直接使用 CSS 控制它的大小,还是在 JavaScript 设置 CSS 属性,都不能实质上改变它的小,只能说 Canvas 被拉伸了或者说是收缩了。

    1. 我们还可以创建渐变,利用 createLinearGradient(startX, startY, endX, endY) 方法。
      <script>
      var canvas = document.getElementById("mycanvas");
      var mycontext = canvas.getContext("2d");

           mycontext.beginPath();
           mycontext.lineWidth = "12";
           mycontext.lineCap = "round";
           mycontext.lineJoin = "round";
      
           var linegrad = mycontext.createLinearGradient(20, 20, 40, 60);
           linegrad.addColorStop(0.5, "#0f0");
           linegrad.addColorStop(1, "#fff");
           mycontext.fillStyle = linegrad;
      
           mycontext.moveTo(20, 20);
           mycontext.lineTo(50, 50);
           mycontext.lineTo(20, 70);
           mycontext.closePath();
           mycontext.fill();
      
       </script>
      
    2. 可以将我们的图片绘制在 Canvas 中,下面就用下面这张图片当做例子。

      1.jpg
      <script>
      var canvas = document.getElementById("mycanvas");
      var mycontext = canvas.getContext("2d");
           var img = new Image();
           img.onload = function () {
               mycontext.drawImage(img, 0, 0);
           }
           img.src = "one.jpg";
       
       </script>
      

    这里我们设置当图像加载的时候,就利用 drawImage() 方法将图片绘制在 (0, 0) 的位置上。

    demo02.png
    这是效果图,可见,这的确是图片的左上角部分,但是由于Canvas的宽高不够,所以将我们的图片进行了裁剪。这种效果可能不是我们想要的,所以我们可能用到 drawImage() 的另一种调用方式,这种参数接收 8 个参数,第一个参数当然是图片变量,接下来就是第一个四元参数 (sx, sy, sw, sh) 代表要捕获的图像数据的左上角位置及其宽度和高度,后一个四元参数 (dx, dy, dw, dh) 表示要在 canvas 元素中图像数据所要复制到的位置的左上角及其宽度和高度。
    mycontext.drawImage(img, 400, 450, 200, 200, 0, 0, 200, 200);
    这个时候的效果如下
    demo03.png
    1. Canvas 中放置文本有两种方式 fillText()strokeText() 使用方法和效果如下
      mycontext.font = "25pt Arial";
      mycontext.fillText("Hello canvas", 20, 50);
      mycontext.strokeText("Hello canvas", 20, 100);
    demo04.png

    相关文章

      网友评论

      本文标题:《Html5 实例》阅读笔记(二)

      本文链接:https://www.haomeiwen.com/subject/rcweyttx.html