上一篇文章中我们讲了HTML5中新的元素及其描述,本篇文章中我们将讲述有关HTML5 Canvas的知识点。
在网页上绘制图形就需要用到Canvas元素。一些图表和图像也能够使用Canvas绘制。HTML5的Canvas使用JavaScript,在一个名为画布的矩形区域内绘制图形,< canvas >标签仅作为图形容器。用户可以在画布中控制每一个像素点。它拥有丰富多彩的绘制图形、添加图像的方法
下面的例子将展示如何在HTML5页面中添加Canvas元素,并规定元素的id、宽度与高度:
<canvas id="myCanvas" width="200" height="100"></canvas>
还请注意:标签通常需要定义一个id属性,以方便供脚本引用,width与height定义画布的宽度与高度,即画布的大小。你可以在页面中定义多个canvas元素。使用style属性可以用来添加边框。
canvas元素本身只是一个图形容器,没有绘制功能,所以我们需要借助JavaScript来完成绘制工作:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="#00FFCC";
ctx.fillRect(0,0,150,75);
首先找到canvas元素并创建context对象,getContext(“2d”)对象是内部创建的HTML5对象。它有着多种多样的绘制路径、图形、字符与添加图像的方法。
设置fillStyle属性可以是css颜色,渐变或者图案。它的默认设置是黑色即 #000000,fillRect(x,y,width,height) 方法定义了矩形当前的填充方式。
上边的例子中,
ctx.fillStyle=“#00FFCC”;
ctx.fillRect(0,0,150,75);
这两行代码作用是绘制一个薄荷绿色的矩形,至于下面的坐标,这是下一小节讲述的内容。
canvas 是一个二维网格。左上角的坐标为 (0,0)
上面的例子中,fillRect 方法拥有参数 (0,0,150,75)。
通俗来讲就是在画布上绘制 一个150x75 的矩形,从左上角(0,0)开始 。
在canvas中绘制线段,我们会使用以下方法:
1.moveTo(x,y) 定义线条开始坐标
2.lineTo(x,y) 定义线条结束坐标
绘制线条需要使用到ink
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();
在canvas中绘制图形,我们使用下列方法(以圆形为例):
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
除了arc(),我们在绘制圆形时还用到了ink中的sreoke()或者fill()
绘制文本时,重要的属性与方法如下列所示
方法 | 功能 |
---|---|
font | 字体的定义 |
fillText(text,x,y) | 在 canvas 上绘制实心的文本 |
strokeText(text,x,y) | 在 canvas 上绘制空心的文本 |
使用 fillText(),用Arial字体在画布上绘制30px高的文字(实心):
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.fillText("Hello World",10,50);
使用 fillText(),用Arial字体在画布上绘制30px高的文字(空心)
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.strokeText("Hello World",10,50);
渐变可以填充在矩形, 圆形, 线条, 文本等等, 各种形状与颜色可以自己定义。
以下有两种不同的方式来设置Canvas渐变:
1.createLinearGradient(x,y,x1,y1) - 创建线条渐变
2.createRadialGradient(x,y,r,x1,y1,r1) - 创建一个径向/圆渐变
当我们使用渐变对象,必须使用两种或两种以上的停止颜色。
addColorStop()方法指定颜色停止,参数使用坐标来描述,可以是0至1。
使用渐变,设置fillStyle或strokeStyle的值为 渐变,然后绘制形状,如矩形,文本,或一条线。
线性渐变:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// 创建渐变
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// 填充渐变
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);
径向/圆渐变:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// 创建渐变
var grd=ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// 填充渐变
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);
把一幅图像放置到画布上, 使用以下方法:
drawImage(image,x,y)
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("zyf");
ctx.drawImage(img,10,10);
我们这此仅介绍了canvas的基础用法,其他进阶用法读者可以参考开发手册,上面有标签的完整属性介绍。