beginPath和closePath从名字上看好像是开始路径和结束路径, 直觉上它们应该成对出现.
实际上并不是, beginPath开始一条路径.
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// 第一段路径
ctx.beginPath();
ctx.lineWidth="5";
ctx.strokeStyle="red"; // 红色路径
ctx.moveTo(0,75);
ctx.lineTo(250,75);
ctx.stroke(); // 进行绘制
// 第二段路径
ctx.beginPath();
ctx.strokeStyle="blue"; // 蓝色路径
ctx.moveTo(50,0);
ctx.lineTo(150,130);
ctx.stroke(); // 进行绘制
去掉第二个beginPath
试试:
在第二个stroke
, 这个路径包括两个线段, 因此会覆盖第一次stroke
画的红色线段.
closePath则是完全不同的作用.
笔点返回到当前子路径起始点的方法。它尝试从当前点到起始点绘制一条直线。 如果图形已经是封闭的或者只有一个点,那么此方法不会做任何操作。
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.moveTo(20,20);
ctx.lineTo(20,100);
ctx.lineTo(70,100);
ctx.closePath();
ctx.stroke();
去掉closePath的效果: