尝试Canvas组合图形功能后,想清除图形从新绘图。我该如何操作?每次都重绘新的矩形Canvas虽然有效,但并不是最好的办法,有没有更加简便实用的方法?
尝试Canvas组合图形功能后,想清除图形从新绘图。我该如何操作?每次都重绘新的矩形Canvas虽然有效,但并不是最好的办法,有没有更加简便实用的方法?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
答案:
Pentium10:
一种方法是重置canvas.width和所有canvas状态(如transformations,lineWidth,strokeStyle等)。
另一种更快捷的方法是使用ctx.clearRect(0,0,canvas.width,canvas.height)。如果你已经修改了变形矩阵,可能会导致清除不全。所以要优先重置变形矩阵状态:
我在Chrome中做了一些分析,清除300x150(默认尺寸)的Canvas比重置矩形要快10%。随着Canvas尺寸的增大,所用的时间也会逐渐拉开差距。
trembl:如果你绘制了线条,不要忘记context.beginPath(); 否则线条清除不掉。
JonathanK:别人已经提出了很好的解决方案,也许context.clear()方法对于你也会有用。
orion elenzil:
如果你想在原先的图片上添加点乐趣,只清除部分Canvas的话可以尝试”淡出“效果,这个很容易实现,仅需添加一个白色背景。