回答
不是,一旦你在畫布上繪製了一些東西,就沒有任何東西可以清除,只是你繪製的像素。 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