HTML DOM Canvas 對象
<canvas> 元素定義 HTML 頁面中的位圖區域。
Canvas API 允許 JavaScript 在畫布上繪制圖形。
Canvas API 可以繪制形狀、線條、曲線、方框、文本和圖像,以及顏色、旋轉、透明度和其他像素操作。
將 Canvas 添加到 HTML
您可以使用 <canvas> 標簽在 HTML 頁面中的任意位置添加 canvas 元素:
實例
<canvas id="myCanvas" width="300" height="150"></canvas>
如何訪問 Canvas 元素
您可以使用 HTML DOM 方法 getElementById() 訪問 <canvas> 元素:
const myCanvas = document.getElementById("myCanvas");
如需在畫布上繪圖,您需要創建 2D 上下文對象:
const ctx = myCanvas.getContext("2d");
筆記
HTML <canvas> 元素本身沒有繪圖功能。
您必須使用 JavaScript 來繪制任何圖形。
getContext() 方法返回一個帶有繪圖工具(方法)的對象。
在畫布上繪圖
創建 2D 上下文對象之后,您就可以在畫布上繪圖了。
下面的 fillRect() 方法繪制了黑色矩形,其左上角位于位置 20,20。該矩形寬 150 像素,高 100 像素:
實例
const myCanvas = document.getElementById("myCanvas"); const ctx = myCanvas.getContext("2d"); ctx.fillRect(20, 20, 150, 100);
使用顏色
fillStyle 屬性設置繪圖對象的填充顏色:
實例
const myCanvas = document.getElementById("myCanvas"); const ctx = myCanvas.getContext("2d"); ctx.fillStyle = "red"; ctx.fillRect(20, 20, 150, 100);
您還可以使用 document.createElement() 方法創建一個新的 <canvas> 元素,并將該元素添加到現有 HTML 頁面:
實例
const myCanvas = document.createElement("canvas"); document.body.appendChild(myCanvas); const ctx = myCanvas.getContext("2d"); ctx.fillStyle = "red"; ctx.fillRect(20, 20, 150, 100);
路徑
在畫布上繪圖的常見方法是:
- 開始路徑 - beginPath()
- 移動到一個點 - moveTo()
- 在路徑中繪制 - lineTo()
- 繪制路徑 - stroke()
實例
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.moveTo(20, 20); ctx.lineTo(20, 100); ctx.lineTo(70, 100); ctx.stroke();
顏色、樣式和陰影
屬性 | 描述 |
---|---|
fillStyle | 設置或返回用于填充繪圖的顏色、漸變或圖案。 |
strokeStyle | 設置或返回用于筆劃的顏色、漸變或圖案。 |
shadowColor | 設置或返回用于陰影的顏色。 |
shadowBlur | 設置或返回陰影的模糊級別。 |
shadowOffsetX | 設置或返回陰影到形狀的水平距離。 |
shadowOffsetY | 設置或返回陰影到形狀的垂直距離。 |
方法 | 描述 |
---|---|
createLinearGradient() | 創建線性漸變(用于畫布內容)。 |
createPattern() | 在指定方向重復指定的元素。 |
createRadialGradient() | 創建徑向/圓形漸變(用于畫布內容)。 |
addColorStop() | 規定漸變對象中的顏色和停止位置。 |
線條樣式
屬性 | 描述 |
---|---|
lineCap | 設置或返回線的端蓋樣式。 |
lineJoin | 設置或返回兩條線相交時創建的角的類型。 |
lineWidth | 設置或返回當前線寬。 |
miterLimit | 設置或返回最大斜接長度。 |
矩形
方法 | 描述 |
---|---|
rect() | 創建矩形。 |
fillRect() | 繪制“填充的”矩形。 |
strokeRect() | 繪制矩形(無填充)。 |
clearRect() | 清除給定矩形內的指定像素。 |
路徑
方法 | 描述 |
---|---|
fill() | 填充當前圖形(路徑)。 |
stroke() | 實際上繪制您定義的路徑。 |
beginPath() | 開始路徑,或重置當前路徑。 |
moveTo() | 將路徑移動到畫布中的指定點,而不創建線。 |
closePath() | 創建從當前點返回起點的路徑。 |
lineTo() | 添加一個新點并創建一條從該點到畫布中最后一個指定點的線。 |
clip() | 從原始畫布中剪裁任意形狀和大小的區域。 |
quadraticCurveTo() | 創建二次貝塞爾曲線。 |
bezierCurveTo() | 創建三次貝塞爾曲線。 |
arc() | 創建圓弧/曲線(用于創建圓或圓的一部分)。 |
arcTo() | 在兩條切線之間創建圓弧/曲線。 |
isPointInPath() | 如果指定點在當前路徑中,則返回 true,否則返回 false。 |
轉換
方法 | 描述 |
---|---|
scale() | 放大或縮小當前圖形。 |
rotate() | 旋轉當前圖形。 |
translate() | 重新映射畫布上的 (0,0) 位置。 |
transform() | 替換繪圖的當前轉換矩陣。 |
setTransform() | 將當前轉換重置為單位矩陣。然后運行 transform()。 |
文本
屬性 | 描述 |
---|---|
font | 設置或返回文本內容的當前字體屬性。 |
textAlign | 設置或返回文本內容的當前對齊方式。 |
textBaseline | 設置或返回繪制文本時使用的當前文本基線。 |
方法 | 描述 |
---|---|
fillText() | 在畫布上繪制“填充”文本。 |
strokeText() | 在畫布上繪制文本(無填充)。 |
measureText() | 返回包含指定文本寬度的對象。 |
圖像繪制
方法 | 描述 |
---|---|
drawImage() | 在畫布上繪制圖像、畫布或視頻。 |
像素操作
屬性 | 描述 |
---|---|
width | 返回 ImageData 對象的寬度。 |
height | 返回 ImageData 對象的高度。 |
data | 返回包含指定 ImageData 對象的圖像數據的對象。 |
方法 | 描述 |
---|---|
createImageData() | 創建新的空白 ImageData 對象。 |
getImageData() | 返回 ImageData 對象,該對象復制畫布上指定矩形的像素數據。 |
putImageData() | 將圖像數據(來自指定的 ImageData 對象)放回畫布上。 |
合成
屬性 | 描述 |
---|---|
globalAlpha | 設置或返回繪圖的當前 alpha 或透明度值。 |
globalCompositeOperation | 設置或返回如何將新圖像繪制到現有圖像上。 |
其他
方法 | 描述 |
---|---|
save() | 保存當前上下文的狀態。 |
restore() | 返回之前保存的路徑狀態和屬性。 |
createEvent() | |
getContext() | |
toDataURL() |