Is it necessary to include ctx.closePath() if I am going to use ctx.fill() or ctx.stroke() when drawing paths in canvas?
Here is an example below:
ctx.beginPath()
// point 1
ctx.moveTo(x 0.5,y 0.5)
// point2
ctx.lineTo(x2 0.5, y2 0.5)
// point 3
ctx.lineTo(x3 0.5, y3 0.5)
ctx.closePath() // <--- IS THIS NECESSARY ?
ctx.stroke()
CodePudding user response:
The function does what it says, it closes the path, if you want a closed triangle in your example then the closepath() is required, if you want two lines then it's not.
So the answer to your question is: No, stroke()
and fill()
does not close your path.
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
let x = 10;
let y = 10;
ctx.beginPath()
// point 1
ctx.moveTo(x/2 0.5,y/2 0.5)
// point2
ctx.lineTo(x*2 0.5, y*4 0.5)
// point 3
ctx.lineTo(x*3 0.5, y*2 0.5)
ctx.closePath() // <--- IS THIS NECESSARY ?
ctx.stroke()
// New path
x = 50;
y = 20;
ctx.beginPath()
// point 1
ctx.moveTo(x 0.5,y 0.5)
// point2
ctx.lineTo(x*2 0.5, y*4 0.5)
// point 3
ctx.lineTo(x*3 0.5, y*2 0.5)
ctx.stroke()
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML canvas tag.</canvas>