canvas清除已繪制的圖形

HTML5 Canvas 清除圓形、不規(guī)則區(qū)域

原文地址:HTML5 Canvas 清除圓形、不規(guī)則區(qū)域

  1. clearRect

默認(rèn) Canvas Api 只提供了清除矩形區(qū)域的接口 clearRect(),但有時(shí)候需要清除圓形或其他特殊形狀的區(qū)域。

  1. ctx.globalCompositeOperation

ctx.globalCompositeOperation 提供了多種色彩合成模式,其中 destination-out 能夠完成清除效果

  • source-over

這是默認(rèn)設(shè)置,并在現(xiàn)有畫(huà)布上下文之上繪制新圖形。

  • destination-out

現(xiàn)有內(nèi)容保持在新圖形不重疊的地方。(優(yōu)點(diǎn)就是不會(huì)清空整個(gè)畫(huà)布,會(huì)保留之前以及繪制的部分)

CanvasRenderingContext2D.prototype.clearArc = function(x, y, radius, startAngle, endAngle, anticlockwise) {
    this.beginPath();
    this.globalCompositeOperation = 'destination-out';
    this.fillStyle = 'black';
    // 繪制新圖形
    this.arc(x, y, radius, startAngle, endAngle, anticlockwise);
    // 參數(shù)分別是:圓心橫坐標(biāo)、縱坐標(biāo)、半徑、開(kāi)始的角度、結(jié)束的角度、是否逆時(shí)針
    this.fill();
    this.closePath();
};
  1. 通過(guò)清空畫(huà)布也可以實(shí)現(xiàn)
// canvas每當(dāng)高度或?qū)挾缺恢卦O(shè)時(shí),畫(huà)布內(nèi)容就會(huì)被清空,所以會(huì)導(dǎo)致之前畫(huà)的圓都被刪除
      function clearCanves(canvas, width, height) {
        canvas.height = height;
        canvas.width = width;
      }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容