Canvas绘图 (html5新增特性)

  • Canvas

      使用<canvas>对象,需要设置属性:width,height。指定绘图的区域大小。在canvas标签前后出现的信息将在不支持<canvas>元素的浏览器中显示出来。如下:

<canvas id="drawing" width="400" height="400">a drawing of something</canvas>

      要在这块画布上绘图,需要取得绘图上下文。取得绘图上下文对象的引用需要调用getContext()方法并传入上下文的名字。传入“2d” 取得2D上下文对象。

1 <canvas id="drawing" width="400" height="400">a drawing of something</canvas>
2 <script type="text/javascript">
3     var drawing=document.getElementById("drawing");
4     if(drawing.getContext){     //检测获取绘图上下文对象的方法是否存在
5         var context=drawing.getContext("2d");
6 
7     }
8 </script>

    要导出<canvas>元素上绘制的图像,可使用toDataURL()方法。参数为图像的类型格式

 1 <canvas id="drawing" width="400" height="400">a drawing of something</canvas>
 2 <script type="text/javascript">
 3     var drawing=document.getElementById("drawing");
 4     if(drawing.getContext){
 5         var imgURL=drawing.toDataURL("image/png");
 6         var image=document.createElement("img");
 7         image.src=imgURL;
 8         document.body.appendChild(image);
 9 
10     }
11 </script>
  •  2D上下文

坐标开始于<canvas>元素的左上角,绘制简单的2D图形。

操作大多分为描边和填充两个操作,属性为:fillStyle(填充),strokeStyle(描边).

  • 绘制矩形(相关的方法:fillRect(),strokeRect(),clearRect() 清除画布上的矩形区域)
 1 <canvas id="drawing" width="400" height="400">a drawing of something</canvas>
 2 <script type="text/javascript">
 3     var drawing=document.getElementById("drawing");
 4     if(drawing.getContext){
 5         /*var imgURL=drawing.toDataURL("image/png");
 6         var image=document.createElement("img");
 7         image.src=imgURL;
 8         document.body.appendChild(image);*/
 9         var context=drawing.getContext("2d");
10         context.fillStyle="red";
11         context.fillRect(10,10,50,50);
12         context.fillStyle="rgba(0,0,255,0.5)";
13         context.fillRect(30,30,50,50);
14 
15 
16     }
17 </script>

 

  • 画布上绘制路径:首先调用beginPath()方法,表示要开始绘制新路径,然后调用方法: arc(),arcTo(),lineTo(),moveTo(),quadraticCurveTo(),rect(),             最后创建路径后选择:closePath()方法,fill(),stroke()。

    绘制时钟:

 1 <canvas id="drawing" width="400" height="400">a drawing of something</canvas>
 2 <script type="text/javascript">
 3     var drawing=document.getElementById("drawing");
 4     if(drawing.getContext){
 5         var context=drawing.getContext("2d");
 6         context.beginPath();
 7         //绘制外圆
 8         context.arc(100,100,99,0,2*Math.PI,false);
 9         //绘制内圆
10         context.moveTo(194,100);
11         context.arc(100,100,94,0,2*Math.PI,false);
12         //绘制分针
13         context.moveTo(100,100);
14         context.lineTo(100,15);
15         //绘制时针
16         context.moveTo(100,100);
17         context.lineTo(35,100);
18         //描边
19         context.stroke();
20     }
21 </script>
  • 绘制文本:fillText()和strokeText()   四个参数:要绘制的文本字符,x坐标,y坐标,可选最大像素宽度。 属性:font(文本样式,大小,字体),textAlign(文本对齐方式),textBaseline(文本的基线).
1         context.font="bold 14px Arial";
2         context.textAlign="center";
3         context.textBaseline="middle";
4         context.fillText("12",100,20);

        变换:rotate()围绕圆点旋转角度,scale()缩放一定比例,translate()平移,transform,setTransform。

  • 绘制图像:把图像绘制到画布上,drawImage()方法。
1         var img=document.images[0];
2         context.drawImage(img,100,100);
  • 阴影

     shadowColor:阴影颜色。

     shadowOffsetX:形状或路径x轴方向的阴影偏移量。

     shadowOffsetX:形状或路径y轴方向的阴影偏移量。

     shadowBlur:模糊像素数。

   这些属性通过context对象来修改。在绘制之前设置完成,能自动产生阴影。

posted @ 2018-08-23 17:49  阿兰儿  阅读(177)  评论(0编辑  收藏  举报