回答
不是,一旦你在画布上绘制了一些东西,就没有任何东西可以清除,只是你绘制的像素。 clearRect
方法不清除先前绘制的对象,它只是清除参数定义的空间中的像素。如果您知道包含它的矩形,则可以使用clearRect
方法清除圆弧。这当然会清除该区域中的任何其他像素,因此您必须重新绘制它们。
这是很好的建议。如果您担心要清除弧线上的其他内容,请考虑将要绘制的对象分隔到多个画布上(堆叠在另一个上方)。这样一来,弧线周围的小清除并不会消除一些背景内容,并且您仍然可以避免从context.clearRect(0,0,screenWidth,screenHeight)中获得巨大的性能。 – 2016-09-07 14:45:21
没有clearArc
但是你可以使用组合操作来实现同样的事情
context.globalCompositeOperation = 'destination-out'
根据MDC此设置的效果
现有内容保持在与新形状不重叠的位置。
https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Canvas_tutorial/Compositing
所以用这个模式中的任何填充形状上最终会消除当前画布的内容。
谢谢!使用这种方法,我的动画每帧都从7ms降到0.5ms。 – 2013-10-18 10:11:15
您可以使用clearRect()方法擦除画布的一部分(包括您的弧线),但是当您使用clearRect()和arcs或其他使用beginPath()和closePath()在绘图时,您也需要在擦除时处理路径。否则,你可能最终会出现一个褪色的弧形版本。
//draw an arc (in this case, a circle)
context.moveTo(x, y);
context.beginPath();
context.arc(x,y,radius,0,Math.PI*2,false);
context.closePath();
context.strokeStyle = "#ccc";
context.stroke();
//now, erase the arc by clearing a rectangle that's slightly larger than the arc
context.beginPath();
context.clearRect(x - radius - 1, y - radius - 1, radius * 2 + 2, radius * 2 + 2);
context.closePath();
这是一个相当于clearRect()
的圆形。主要是根据@ moogoo的答案设置一个复合操作。
var cutCircle = function(context, x, y, radius){
context.globalCompositeOperation = 'destination-out'
context.arc(x, y, radius, 0, Math.PI*2, true);
context.fill();
}
见https://developer.mozilla.org/samples/canvas-tutorial/6_1_canvas_composite.html:
这里有一个更新的捣鼓你太(使用clearRect):https://jsfiddle.net/x9ztn3vs/2/
它有一个clearApple功能:
block.prototype.clearApple = function() {
ctx.beginPath();
ctx.clearRect(this.x - 6, this.y - 6, 2 * Math.PI, 2 * Math.PI);
ctx.closePath();
}
- 1. HTML5画布圆弧代码更正
- 2. 如何清除画布中圆圈的前一个位置?
- 3. Javascript HTML5画布绘制透明圆圈
- 4. 如何遮挡画布中的圆圈
- 5. 为什么画布在圆弧(圆弧)之间画线?
- 6. 在布局中画圆圈
- 7. HTML5画布,我的圆弧画出中心的起点线
- 8. HTML5画布 - 绘制线段和圆圈 - 一个圆圈的不同颜色
- 9. Javascript画布绘制矩形或圆圈
- 10. Html 5画布圆弧问题 - 圆弧被扭曲
- 11. 画布中圆弧之间的空间
- 12. 如何在画布上移动圆圈?
- 13. 如何清除纹理视图中的画布(绘制增加的圆圈后)
- 14. 如何在多个画布上绘制圆圈html5?
- 15. 如何在HTML5画布上绘制圆圈作为单独的画布?
- 16. Html5中的光滑圆圈
- 17. 更改画布中圆圈的起点?
- 18. 为什么画布圆圈看起来不像一个圆圈?
- 19. 帆布:小圆弧
- 20. 如何在Javafx中动画圆弧
- 21. 在画布中心绘制圆圈
- 22. 动画 - 在iOS中绘制圆圈 - 未完成圆圈动画
- 23. 如何清除画布html5?
- 24. 在gwt中使用html5画布绘制圆圈?
- 25. 在圆上画一条圆弧
- 26. 画布 - 填充圆弧/圆的特定区域
- 27. pygame圆圈动画
- 28. 矩形和圆(或圆弧)的交集
- 29. 一旦用户点击它,移除在html5画布中绘制的圆圈
- 30. html5画布绘制带有额外数据的圆圈变量
一旦你需要清除复杂的形状,画布抽象库可能会有用。这就是为什么[我建立了一个](http://kangax.github.com/fabric.js/)。也许它可能会有用。 – kangax 2011-11-26 23:26:30