使用MoveTo和LineTo的Canvas Fillstyle

时间:2017-07-11 14:28:35

标签: canvas

我在画布上掏出一个形状,但我无法填写它为什么:v 我想用矩形内的任何颜色填充。

HTML:<canvas id="canvas" width="1000px" height="1000px"></canvas>

var ctx = document.getElementById("canvas").getContext("2d");
var size = 200;

ctx.rect(500, 50, 200, 200);
ctx.stroke();

ctx.lineWidth = 2
ctx.strokeStyle = "red";
ctx.fillStyle = "red";
ctx.beginPath();
ctx.moveTo(530, 100);
ctx.lineTo(550, 140);

ctx.moveTo(550, 140);
ctx.lineTo(570, 100);

ctx.moveTo(570, 100);
ctx.lineTo(550, 120);

ctx.moveTo(530, 100);
ctx.lineTo(550, 120);

ctx.closePath();
ctx.fill();
ctx.stroke();

1 个答案:

答案 0 :(得分:1)

这是因为您多次使用moveTo()方法,这会破坏对前一行的引用。

另外,在绘制矩形之前,您应该使用beginPath()方法。

var ctx = document.getElementById("canvas").getContext("2d");
var size = 200;

ctx.beginPath();
ctx.rect(500, 50, 200, 200);
ctx.stroke();

ctx.beginPath();
ctx.moveTo(530, 100);
ctx.lineTo(550, 140);
ctx.lineTo(570, 100);
ctx.lineTo(550, 120);
ctx.closePath();

ctx.lineWidth = 2
ctx.fillStyle = "red";
ctx.fill();
<canvas id="canvas" width="1000" height="1000"></canvas>