canvas學習筆記七 混合和裁剪

2022-02-25 05:45:57 字數 874 閱讀 1798

如果我們先畫了乙個圖形,然後要在這個圖形上面再畫乙個圖形,那麼這個圖形會怎麼樣呢?是覆蓋在原來的圖形上面嗎?這時候,就要用到globalcompositeoperation這個屬性了。

當有兩個圖形重疊的時候,可以有很多種混合模式,比如上面的圖形蓋住下面的,或者下面的圖形蓋住上面的,或者去掉重疊的部分。globalcompositeoperation這個屬性就是用來設定混合方式的。這個屬性總共有12種值。

因為太多了,我就不一一枚舉了,大家自己去查。戳這裡

我這裡就簡單介紹其中幾種。

source-over

預設值。新的形狀會覆蓋在原來的形狀上。

destination-over

和上面乙個屬性反過來。

copy

只顯示新形狀。

這個屬性和photoshop圖層裡的混合模式是一樣的,也有正片疊底、亮化、差值等等模式。

如果你只想在乙個圓形區域畫圖,而圓形區域外的圖形都看不見的話,你可以使用clip()裁剪畫布。

實際上canvas本身就帶有乙個canvas一樣大的裁剪區域,所以實際上並沒有新增裁剪路徑,只是裁剪路徑被修改了。

使用clip()無需用closepath()閉合路徑,clip()本身就會閉合路徑。

需要注意的是,當clip()了乙個路徑以後,無法改變clip()的路徑形狀,要恢復的話只能用restore()回到原先的狀態。

function draw()   }

function drawstar(ctx, r) else

} ctx.closepath();

ctx.fill();

ctx.restore();

}

Canvas學習之路(七)

1.定義小球 ball 2.繪製小球 update函式是更新小球用的,ctx.fillstyle rgba 255,255,255,05 這一句是用來增添小球的運動軌跡的。function drawball ctx 3.update函式 function update else 4.呼叫上面的函式v...

canvas學習筆記

1 canvas 元素a 元素有乙個叫做 getcontext 的方法,這個方法是用來獲得渲染上下文和它的繪畫功能,通過簡單的測試getcontext 方法的存在,指令碼可以檢查程式設計支援性var canvas document.getelementbyid tutorial if canvas....

canvas學習筆記

canvas是html5中的新功能,它是一塊,在你開闢的空間內部用 畫圖。而建立畫布和畫圖是需要一些步驟的 canvas是布 context是各種筆 先看乙個簡單的 瀏覽器不支援canvas 每乙個我們要進行的canvas操作都必須有獲取畫布,和獲取畫布內容的操作。然後還有乙個問題就是,我們要預防老...