简体   繁体   中英

Does ctx.stroke() and ctx.fill() automatically close path in canvas?

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()

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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM