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

    

 

posted @ 2017-12-11 18:05  黑山大胖子  阅读(401)  评论(0编辑  收藏  举报