
- HTML Canvas 教程
- HTML Canvas - 首頁
- HTML Canvas - 簡介
- 環境設定
- HTML Canvas - 第一個應用
- HTML Canvas - 繪製二維圖形
- HTML Canvas - 路徑元素
- 使用路徑元素繪製二維圖形
- HTML Canvas - 顏色
- HTML Canvas - 新增樣式
- HTML Canvas - 新增文字
- HTML Canvas - 新增影像
- HTML Canvas - Canvas 時鐘
- HTML Canvas - 變換
- 合成與裁剪
- HTML Canvas - 基本動畫
- 高階動畫
- HTML Canvas API 函式
- HTML Canvas - 元素
- HTML Canvas - 矩形
- HTML Canvas - 線
- HTML Canvas - 路徑
- HTML Canvas - 文字
- HTML Canvas - 顏色和樣式
- HTML Canvas - 影像
- HTML Canvas - 陰影和變換
- HTML Canvas 有用資源
- HTML Canvas - 快速指南
- HTML Canvas - 有用資源
- HTML Canvas - 討論
HTML Canvas - 合成與裁剪
當需要繪製多個圖形時,我們通常會在 Canvas 元素上將圖形相互繪製。我們可以使用globalCompositeOperation屬性來排序合成圖形,並且還有一個屬性clip可以幫助我們隱藏構造圖形中不需要的部分。下面列出了這些屬性。
globalCompositeOperation − 透過使用此屬性,我們可以遮蔽現有的圖形,在現有的圖形上繪製新圖形,以及清除部分割槽域。此屬性接受的值在下面的表格中列出。
源上方 |
源內部 |
源外部 |
源疊加 |
目標上方 |
目標內部 |
目標外部 |
目標疊加 |
更亮 |
複製 |
異或 |
正片疊底 |
濾色 |
疊加 |
變暗 |
變亮 |
顏色減淡 |
顏色加深 |
強光 |
柔光 |
差值 |
排除 |
色相 |
飽和度 |
顏色 |
亮度 |
示例
以下示例實現了合成屬性。程式碼如下所示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> Composting </title> </head> <body onload="composting();"> <canvas id="canvas" width="400" height="250" style="border: 1px solid black;"></canvas> <script> function composting() { var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); context.fillStyle = 'blue'; context.fillRect(25, 25, 200, 200); context.fill(); context.globalCompositeOperation = 'darken'; context.fillStyle = 'purple'; context.fillRect(125, 25, 200, 200); context.fill(); context.fillStyle = 'yellow'; context.fillRect(225, 25, 100, 200); context.fill(); } </script> </body> </html>
輸出
上述程式碼返回的輸出為

裁剪類似於使用路徑在畫布元素中構建圖形,但它就像一個蒙版,可以移除獲得的圖形中不需要的部分。實現裁剪的方法如下所示
Clip() − 此方法將構建的路徑圖形轉換為裁剪路徑。它通常用於代替closePath()函式,該函式將其轉換為裁剪路徑,而不是描邊或填充路徑。
裁剪示例
以下程式碼為畫布元素實現了裁剪方法。
<!DOCTYPE html> <html lang="en"> <head> <title> Clipping </title> </head> <body onload="clipping();"> <canvas id="canvas" width="400" height="250" style="border: 1px solid black;"></canvas> <script> function clipping() { var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); context.fillStyle = 'skyblue'; context.fillRect(0, 0, 400, 250); context.fill(); context.beginPath(); context.arc(200, 125, 100, 1 * Math.PI, 5 * Math.PI); context.fillStyle = 'orange'; context.fill(); context.clip(); } </script> </body> </html>
輸出
上面程式碼生成的輸出如下所示:

廣告