HTML5画布 - 不同的笔触

Kil*_*oku 7 html5 canvas graph line

我必须绘制一个有3条不同线条的图形.线图.

我试过这样做:

function draw() 
{  
    var canvas = document.getElementById("canvas");  
    var ctx = canvas.getContext("2d");      
    ctx.lineWidth=10;

    ctx.strokeStyle="teal";
    ctx.moveTo(10,CompanyA[0]);
    ctx.lineTo(110,CompanyA[1]);
    ctx.lineTo(210,CompanyA[2]);
    ctx.stroke();


    ctx.strokeStyle="green";
    ctx.moveTo(10,CompanyB[0]);
    ctx.lineTo(110,CompanyB[1]);
    ctx.lineTo(210,CompanyB[2]);
    ctx.stroke();       

    ctx.strokeStyle="yellow";
    ctx.moveTo(10,CompanyC[0]);
    ctx.lineTo(110,CompanyC[1]);
    ctx.lineTo(210,CompanyC[2]);
    ctx.stroke();
}
Run Code Online (Sandbox Code Playgroud)

但显然,最后一击是为了所有线条.所以我得到3条黄线,而不是青色,绿色和黄色.我尝试创建三个不同的Context(ctx1,ctx2和ctx3),但出于某种原因,所有都是使用"ctx3.stroke()"调用绘制的.

这样做的正确方法是什么?

Del*_*lta 22

ctx.beginPath()在每一行之前添加一个呼叫,并在每一行ctx.closePath()之后添加呼叫ctx.stroke()

如果不这样做,每次调用stroke()方法时,不仅会绘制新线,而且还会再次绘制所有前面的线(使用新的strokeStyle),因为它是仍然打开的相同线路径.

  • 这是正确的,但只是要添加一些解释:您已经组装了一条由三段组成的路径,用青色抚摸第一部分,然后用绿色抚摸第一和第二部分,然后用黄色抚摸所有三个部分。黄色正在吸引其他人。 (2认同)