GitHub

canvas常用api

1.canvas宽高设置(默认300*150)

 在canvas标签中给出长宽(不带单位):

<canvas width="600" height="600"></canvas>

 或者在js中设置长宽(不带单位):

canvas.width = 600; 
canvas.height = 600;

 注意:canvas是行内块元素,用CSS设置的width和height像素值是canvas在页面渲染出来的宽高,而用js设置或者在标签中直接给出的则是canvas的分辨率,二者有本质的区别。
    canvas元素的使用与普通的html元素并不相同,它有一个默认尺寸300*150,在css中设置宽高只能改变canvas的显示宽高,而并没有改变画布绘制时的尺寸,所以要为canvas设置绘制的尺寸,必须写在元素标签上或用JS设置。

 Q1: 给canvas标签设置样式 width :100%, height :100%会怎么样呢?

   canvas标签有自己的 height 和 width 属性,当给canvas标签设置 height=100 时,它渲染出来的高度就是100px,给它的父元素设置50px的高度,canvas设置css高度100%,则canvas 整体缩放到 50px高(原理类似于img)。
  

2. 浏览器不兼容canvas标签时才会显示出标签中的内容

  <canvas width="600" height="600"> 您的浏览器不支持canvas标签 </canvas>

3.简单举例

    var canvas = document.getElementById("canvas"); // 获取canvas标签
    var context = canvas.getContext("2d"); // 获取2d上下文环境

    context.beginPath();//可以开始绘制

    context.moveTo(100, 100); //画笔移动到(100,100);
    context.lineTo(150, 200); //创建一条从(100,100)到(150,200)的路径
    context.fillStyle = "#ccc"; //填充颜色为#ccc
    context.strokeStyle = "#fff"; //进行描边
    context.lineWidth = 5;
    context.fill();//进行填充
    context.stroke();//进行描边

    context.closePath();//关闭当前路径 (基于状态)

    //关于closePath():当当前路径不是封闭路径时,使用closePath会自动将当前路径的首尾连接起来

    context.fillRect(x, y, w, h);
    context.clearRect(50, 30, 110, 35); //清除画布上的内容

    //(50,30)为矩形起点,110.35为矩形长宽

   //想绘制多条不封闭路径图形,在每次绘制新路径时使用beginPath即可

4. 绘制弧线
 context.arc( x, y, r, startingAngle, endingAngle, anticlockwise = false );
   参数分别为:圆心坐标,半径,起始角度,结束角度,时钟方向(false为顺时针、true为逆时针)
        三点钟方向为0pi,六点钟方向为0.5pi,九点钟为1.0pi,12点钟为1.5pi
   例如:context.arc( 300, 300, 100, 0, Math.PI*1.5, false );

5. 绘制矩形

 context.fillRect( x, y, w, h );
   context.strokeRect( 50, 30, 110, 35 );
   context.clearRect(50, 30, 110, 35);  //清除画布上的内容

6. 绘制虚线

 context.setLineDash( [ a, b ] ); //a为虚线线段长度,b为虚线线段间隔长度

7. 取得canvas元素相对于浏览器窗口的位置

 element.getBoundingClientRect()方法返回元素的大小及其相对于视口的位置

8. 绘制图片

 context.drawImage( image. x, y, width, height );
   context.drawImage( image, sx, sy, swidth, sheight, x, y, width, height );

   image可以是元素或是image对象,但不能是路径
   传递给 drawImage() 方法的图像必须是 Image 对象或 canvas 元素

9. 绘制文字

 context.font = "20px Arial";
    context.fillStyle = "#000";
    context.fillText( "我是文字", 50, 50 );

 文字居中:
    context.textAlign = "center"; //文本的中心被放置在指定的位置
    context.fillText( "我是蚊子", cvs.width/2, cvs.height/2 );

posted @ 2018-02-13 12:15  長风  阅读(441)  评论(0编辑  收藏  举报