canvas 标签
要使用 canvas 绘图,需要现在HTML中定义一个画布。
<canvas id="canvas" width="500" height="500">你的浏览器不支持canvas。</canvas>
canvas 元素本身没有绘图能力。所有的绘制工作必须在 JavaScript 内部完成。
定义画布
大多数 Canvas 绘图 API 都没有定义在 <canvas> 元素本身上,而是定义在通过画布的 getContext() 方法获得的一个“绘图环境”对象上。
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
矩形
//实心矩形(x,y,width,height)
ctx.fillRect(50, 50, 100, 200);
//空心矩形
ctx.strokeRect(50, 50, 100, 200);
圆形
在闭合路径后,还需要使用 fill() 或 stroke() 方法显示图形。
//圆形
ctx.beginPath();
ctx.arc(70, 18, 15, 0, Math.PI * 2, true);//(x,y,r,sAngle起始角,eAngle结束角,[counterclockwise顺F/逆T时针])
ctx.closePath();
ctx.fill();//填充
ctx.stroke();//描边
线条
在闭合路径后,还需要使用 stroke() 方法显示线条。
//线条
ctx.moveTo(0, 0);//起点
ctx.lineTo(150, 50);
ctx.lineTo(0, 50);
ctx.closePath();//自动闭合线条
ctx.stroke();//描边才显示
渐变
定义好的渐变,还需要使用 fillRect() 等方法填充图形。
//渐变
var grd = ctx.createLinearGradient(0, 0, 100, 200);//线性渐变
grd.addColorStop(0, "#FF0000");//设置渐变开始位置0的颜色
grd.addColorStop(1, "#FFFFFF");//设置渐变结束位置1的颜色
var grd = ctx.createRadialGradient(75, 50, 5, 90, 60, 100);//放射状/圆形渐变(x0,y0,r0,x1,y1,r1),(x0,y0)起始圆坐标,r0起始圆半径,(x1,y1)结束圆坐标,r1结束圆半径
图片
在 canvas 中加载图片,需要先定义一个 image 对象,然后使用 drawImage() 方法绘制图像。需要注意的是使用 src 引用图片后,还需要使用 onload 函数加载方法,才能显示图片。
//图片
var image = new image();
image.src = "image.png";//异步执行,需加载才显示
image.onload = function () {
//执行加载函数
cxt.drawImage(image, 0, 0, 100, 200);//绘制图像(image,x,y,[width],[height])
cxt.drawImage(image, 10, 10, 20, 30, 0, 0, 100, 200);//剪切图像(image, sx, sy, swidth, sheight, x, y, width, height)
}
其他
还可以在 canvas 中加载视频、制作更多图形。
如果想制作 canvas 动画,还需要借助 JavaScript 完成。