在下面的代码中,如果我在两个位置使用
rect()
和fill()
,第二个fillStyle
会覆盖第一个颜色指定的颜色(即,两个矩形都是绿色),但是如果我将第一个rect()
更改为fillRect()
,则程序按预期工作(即,第一个矩形为蓝色,第二个矩形为绿色)。为什么会这样?我以为fillRect()
只是rect()
再加上fill()
,对吧?ctx.translate(canvas.width/2, canvas.height/2);
ctx.fillStyle = "#5A9BDC";
ctx.fillRect(0, 0, rectWidth, rectHeight);
// ctx.rect(0, 0, rectWidth, rectHeight);
// ctx.fill();
ctx.translate(-canvas.width/2, -canvas.height/2);
ctx.fillStyle = "#31B131";
ctx.rect(0, 0, rectWidth, rectHeight);
ctx.fill();
在 Chrome 中测试过 | Fiddle
.beginPath
+ 许多.rect
+.fill
。 - markEfillRect
每秒执行的操作数量比直接绘制甚至是带有beginPath
的直接绘制要多得多。 - Christopher ByrdfillRect()
和fill(path)
。对于1000多个元素,两者表现相当良好。 - Megliofill(combined_path)
调用胜过多个fill(path)
和多个fillRect()
调用。因此,如果您需要使用相同的样式绘制多个多边形,则最高效的方法似乎是创建一个组合路径,然后进行一次填充。 - Meglio