簡體   English   中英

刪除畫布形狀的問題

[英]Issue with erasing canvas shape

我正在畫布上塗鴉,

我遇到了一個問題,當我用背景顏色覆蓋對象以擦除對象時,會留下原始形狀的輪廓。 在此處輸入圖片說明

這是我正在使用的代碼

是的,我沒有使用矩形,因為圓圈可能會重疊。

    function erase(eraseColor) {
    ctx.fillStyle = ctx.strokeStyle = eraseColor || "#FFFFFF";
    drawCircle();
    ctx.fillStyle = ctx.strokeStyle = fillColor;
}

function drawCircle() {
    ctx.beginPath();
    ctx.arc(x, y, rad, 0, Math.PI * 2, true);
    ctx.closePath();
    ctx.fill();
}

我相信這是由於抗鋸齒。 該效果不應出現在不需要抗鋸齒的形狀上(如矩形)。 畫一個更大的擦除圓幾像素(應該做一個)。

萬一出現問題: 您不能關閉canvas的抗鋸齒功能

正如Ray所建議的那樣,您應該考慮使用基於幀的動畫,該動畫通過使用臟矩形進行了優化。

為此,您只需將矩形標記為臟的(如果矩形中的任何像素已更改)(例如,由於動畫)。 然后,清除畫布上的矩形( clearRect )並將其設置為剪貼矩形( clip )。 然后,您遍歷畫布上顯示的所有元素,並檢查它們是否與臟矩形重疊。 如果是這樣,則繪制該元素,否則,請跳到下一個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM