• HTML5 canvas画布标签


    canvas是HTML5新增的标签,作用是创建一块画布,可以通过js来实现画图从而展现出各种炫酷的图形。

    1、如何创建一块画布,可以直接在body中添加canvas标签,

    <canvas id="myCanvas" width="200" height="100" ></canvas>

    2、操作画布的基本方法, 

      首先要获取画布,并使画布可以调用绘图方法,通过js

    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");

      绘制图形的两种基本方法,填充 ctx.fill() 和 绘制边框 ctx.stroke(),可以通过 ctx.fillStyle和 ctx.strokeStyle来设置样式(颜色),ctx.lineWidth可以设置边框的宽度

      样式的默认颜色为#000黑色,边框宽度默认为1px。

    3、坐标,canvas是一个2维的网格,起始坐标在canvas的左上角,此处坐标为0,0,以此点开始x、y轴以像素单位增长。

    4、绘制矩形,有3中方法,

      ctx.fillRect(x,y,w,h) 填充的矩形

      ctx.strokeRect(x,y,w,h) 矩形框

      ctx.clearRect(x,y,w,h) 以矩形消除图形

      其中x代表绘制起点的x轴坐标,y代表绘制起点的y轴坐标,w即width矩形宽度(x轴长度),h即height矩形的高(y轴长度)

    <canvas id="myCanvas" width="300" height="300"></canvas>
        
        <script type="text/javascript">
        
        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        ctx.strokeStyle = "#00f";
        ctx.strokeRect(20,20,210,210);
        ctx.fillStyle = "#f00";
        ctx.fillRect(50,50,150,150);
        ctx.clearRect(100,100,50,50);
    
        </script>
    View Code

        

    4、路径,moveTo()确定开始坐标,lineTo()确定结束坐标,stroke()用来划线,

    var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        ctx.moveTo(10,10);
        ctx.lineTo(50,50);
        ctx.stroke();
    View Code

        

    5、绘制圆形,arc(x,y,r,start,stop),其中

        x,y代表圆心的坐标,

        r代表圆的半径,

        start代表起始角度,角度用的是弧度单位π,在代码中用 Math.PI表示,π=180°,

        stop代表结束角度,路径指定后用fill()或stroke()填充或描边

    var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        ctx.arc(80,80,30,0,2*Math.PI)
        ctx.stroke();
    View Code

        

    6、绘制文本,font定义字体,fillText(text,x,y)绘制实心文本,strokeText(text,x,y)绘制空心文本,

      x,y是文本的坐标,text是文本内容,

    var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        ctx.font = "20px Arial";
        ctx.fillText("Hello World",10,30); 
        ctx.strokeText("Hello World",10,60);
    View Code

        

    7、渐变,有线条渐变和圆渐变

      createLinearGradient(x,y,x1,y1)  线条渐变,渐变的方向是直线的

      createRadialGradient(x,y,r,x1,y1,r1) 圆渐变,渐变的方向是圆形的

      两种渐变都需要用addColorStop()方法来指定停止颜色(渐变的端值),参数使用坐标来描述可以是0至1

      设置好渐变后让fillStyle或strokeStyle的值为渐变,然后就可以绘制渐变图形了

      线条渐变

    var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        var jb = ctx.createLinearGradient(10,0,110,0)
        jb.addColorStop(0,"#00f");
        jb.addColorStop(1,"#f00");
        ctx.fillStyle = jb;
        ctx.fillRect(10,10,100,62);
    View Code

        

      圆渐变

    var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        var jb = ctx.createRadialGradient(50,50,10,50,50,50);
        jb.addColorStop(0,"#00f");
        jb.addColorStop(1,"#f00");
        ctx.fillStyle = jb;
        ctx.arc(50,50,50,0,2*Math.PI);
        ctx.fill();
    View Code

        

    8、置入图片,通过drawImage(image,x,y)向画布置入图片,最好放在window.onload中,保证图片加载完成后再调用 js,因为图片加载时异步进行的,可能会出现图片没有加载完 js 就加载的情况。

    window.onload=function()
        {
            var c = document.getElementById("myCanvas");
            var img = document.getElementsByTagName("img");
            var ctx = c.getContext("2d");
            ctx.drawImage(img[0],10,10);
        }
    View Code

        

  • 相关阅读:
    VR虚拟现实眼镜那些事
    C#使用MysqlBackup.Net 备份MySQL数据库
    AgileConfig服务端搭建
    IE浏览器,各版本的请求头信息
    搜索算法
    一个完整的信号采集系统项目开发流程
    Linux内核模块简介
    搭建wordpress开发环境
    AbstractRoutingDataSource+AOP+JNDI实现spring动态数据源
    Linux 挂载磁盘记录
  • 原文地址:https://www.cnblogs.com/zxbs12345/p/8023424.html
Copyright © 2020-2023  润新知