Canvas标签入门

作者: 吴少在coding | 来源:发表于2017-12-22 12:47 被阅读27次

    一、初步使用 <canvas>标签

    我们先用以前的知识画一个简略的,用的是div标签,简略版
    一个简单的小democanvas 默认的大小是300*150

    HTML代码如下

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width">
      <title>JS Bin</title>
    </head>
    <body>
      <canvas id="canvas" width="300px" height="300px">
        
      </canvas>
    </body>
    </html>
    

    JavaScript代码如下:

    var isPainting = false;
    var canvas =document.getElementById("canvas");
    canvas.onmousedown = function(msg){
      isPainting = true;
      var x = msg.clientX;
    //   console.log(x);
      var y = msg.clientY;
    //   console.log(y);
      var context = canvas.getContext('2d');
      context.beginPath();
      context.arc(x, y, 1, 0, 360);
      context.fill();
    };
    canvas.onmousemove = function(msg){
      if(isPainting){
        var x = msg.clientX;
      var y = msg.clientY;
      var context = canvas.getContext('2d');
      context.beginPath();
      context.arc(x, y, 1, 0, 360);
      context.fill();
      } else{
      
      }
    }
    canvas.onmouseup = function(msg){
      isPainting = false;
      
    }
    

    主要的是以下几句:

      var context = canvas.getContext('2d'); //canvas的上下文环境
      context.beginPath(); //开始画图
      context.arc(x, y, 1, 0, 360); //画一个圆,圆心坐标是(x, y) 半径1px,从0度到 360度。如果是其他数是3.141592678
      context.fill(); //填充
    

    绘制Rectangle 矩形

      context.stroke() //只画边界
      context.fillStyle = 'red'; //用红色填充 //这句话要在前面,因为要先画上去
      fillRect(x,y,width,height) //画一个矩形
      strokeRect(x,y,width,height) //画一个矩形边框
      clearRect(x,y,width,height) //清楚规定大小的矩形
    
    • 总结:除了矩形,其他的都用context.beginPath()开始画图
      getContext的用法让我想起了Java里的request.getContextPath()来获得绝对路径名字,EL表达式就是${pageContext.request.contextPath()},如此怀念那段日子。

    注意一个小Bug

    body默认的margin是8px,会影响你做圆时的位置,避免这个bug就把这个margin设置为0


    [图片上传中...(此时的坐标.png-d559cd-1513917965074-0)]

    你想定位的坐标是 (9,8),这个坐标是相对于视口的,也就是说是相对于HTML那个的,如果你在canvas里面作图必然影响


    此时的坐标.png
    去除之后
    去除margin.png

    二、画布的demo

    要想做出全屏的canvas,一定不能用width='100wh' height='100vh',因为这个会等比缩放

    相关文章

      网友评论

        本文标题:Canvas标签入门

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