美文网首页我爱编程程序员
使用 canvas 绘图的几种方法

使用 canvas 绘图的几种方法

作者: 立正小歪牙 | 来源:发表于2018-06-05 21:50 被阅读21次

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 完成。

canvas 参考手册

相关文章

网友评论

    本文标题:使用 canvas 绘图的几种方法

    本文链接:https://www.haomeiwen.com/subject/ouamsftx.html