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);

親自試一試

路徑

在畫布上繪圖的常見方法是:

  1. 開始路徑 - beginPath()
  2. 移動到一個點 - moveTo()
  3. 在路徑中繪制 - lineTo()
  4. 繪制路徑 - 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()

標準屬性和事件

canvas 對象同時支持標準屬性事件

相關頁面

HTML 教程:HTML5 畫布

HTML 圖像教程:HTML Canvas 教程

HTML 參考手冊:HTML <canvas> 標簽