绘制垂直线时,clearRect不会清除画布

bwi*_*els 13 javascript html5 canvas

我在工作中用帆布打造了一个奇怪的边缘案例.在绘制从画布的顶部到底部的垂直线时,clearRect不会清除画布.渲染其他东西时,clearRect工作正常.

我不确定我是否遗漏了一些明显的东西,如果这是故意的行为或浏览器错误(不太可能,因为在chrome,safari,firefox和opera上的行为是相同的).如果是故意行为,是否有人知道其背后的理由和/或可能指向某些文档?

我做了一个小的测试用例,清楚地显示了行为,只有组合clearRect/vertical线条没有清除画布:http: //jsfiddle.net/kZj6F/

谢谢!

Pru*_*sse 23

您的问题是缺少beginPath导致后续行添加到stroke绘制所有行的同一路径.

如果切换到点并使用clearRect选项返回行,则选择您可以看到最后arc添加到正在绘制的路径.只需添加一个电话ctx.beginPath();之前ctx.moveTo(randomX + 0.5, 0); ctx.lineTo(randomX + 0.5, canvas.height);,问题就解决了.

您可以查看http://jsfiddle.net/kZj6F/1/以查看它是否正常工作.

如果它们被添加到路径并且路径未被清除,它也将具有其他形状.