API Canvas

Phần tử <canvas> định nghĩa vùng bitmap trong trang HTML.

API Canvas cho phép JavaScript vẽ hình ảnh trên canvas.

API Canvas có thể vẽ hình dạng, đường thẳng, đường cong, khung, văn bản và hình ảnh, cũng như màu sắc, quay, độ trong suốt và các thao tác pixel khác.

Thêm Canvas vào HTML

Bạn có thể sử dụng thẻ <canvas> để thêm phần tử canvas vào bất kỳ vị trí nào trong trang HTML:

Mô hình

<canvas id="myCanvas" width="300" height="150"></canvas>

Thử ngay lập tức

Cách truy cập vào phần tử Canvas

Bạn có thể sử dụng phương pháp HTML DOM được gọi là getElementById() để truy cập vào phần tử <canvas>:

const myCanvas = document.getElementById("myCanvas");

Để vẽ trên canvas, bạn cần tạo đối tượng ngữ cảnh 2D:

const ctx = myCanvas.getContext("2d");

Ghi chú

Yếu tố <canvas> HTML tự thân không có chức năng vẽ.

Bạn phải sử dụng JavaScript để vẽ bất kỳ hình ảnh nào.

Phương thức getContext() trả về một đối tượng có công cụ vẽ (phương thức).

Vẽ trên canvas

Sau khi tạo đối tượng ngữ cảnh 2D, bạn có thể vẽ trên canvas.

Phương thức fillRect() dưới đây đã vẽ một hình vuông đen, góc trên cùng bên trái của nó ở vị trí 20,20. Hình vuông có độ rộng 150 pixel và độ cao 100 pixel:

Mô hình

const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillRect(20, 20, 150, 100);

Thử ngay lập tức

Sử dụng màu sắc

Thuộc tính fillStyle thiết lập màu sắc lấp đầy đối tượng vẽ.

Mô hình

const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);

Thử ngay lập tức

Bạn cũng có thể sử dụng phương thức document.createElement() để tạo một yếu tố <canvas> mới và thêm yếu tố đó vào trang HTML hiện có:

Mô hình

const myCanvas = document.createElement("canvas");
document.body.appendChild(myCanvas);
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);

Thử ngay lập tức

Đường dẫn

Cách phổ biến để vẽ trên canvas là:

  1. Bắt đầu đường dẫn - beginPath()
  2. Di chuyển đến một điểm - moveTo()
  3. Vẽ trong đường dẫn - lineTo()
  4. Vẽ đường dẫn - stroke()

Mô hình

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

Thử ngay lập tức

Màu sắc, phong cách và bóng

Thuộc tính Mô tả
fillStyle Đặt hoặc trả về màu sắc, dải màu hoặc mẫu được sử dụng cho việc lấp đầy vẽ.
strokeStyle Đặt hoặc trả về màu sắc, dải màu hoặc mẫu được sử dụng cho đường viền.
shadowColor Đặt hoặc trả về màu sắc được sử dụng cho bóng.
shadowBlur Đặt hoặc trả về mức độ mờ của bóng.
shadowOffsetX Đặt hoặc trả về khoảng cách ngang từ bóng đến hình dạng.
shadowOffsetY Đặt hoặc trả về khoảng cách thẳng đứng từ bóng đến hình dạng.
Phương pháp Mô tả
createLinearGradient() Tạo dần thẳng (dùng cho nội dung canvas).
createPattern() Lặp lại phần tử chỉ định theo hướng chỉ định.
createRadialGradient() Tạo dần tròn hoặc dần thẳng (dùng cho nội dung canvas).
addColorStop() Định nghĩa màu sắc và vị trí dừng trong đối tượng dần.

Kiểu đường

Thuộc tính Mô tả
lineCap Đặt hoặc trả về phong cách đỉnh của đường.
lineJoin Đặt hoặc trả về loại góc được tạo khi hai đường相交.
lineWidth Đặt hoặc trả về độ rộng của đường.
miterLimit Đặt hoặc trả về độ dài tối đa của góc cạnh.

Hình vuông

Phương pháp Mô tả
rect() Tạo hình vuông.
fillRect() Vẽ hình vuông được lấp đầy.
strokeRect() Vẽ hình vuông (không lấp đầy).
clearRect() Xóa pixel cụ thể trong矩形的给定矩形内。

Đường dẫn

Phương pháp Mô tả
fill() Lấp đầy hình ảnh hiện tại (đường dẫn).
stroke() Thực sự vẽ đường dẫn bạn đã định nghĩa.
beginPath() Bắt đầu đường dẫn hoặc đặt lại đường dẫn hiện tại.
moveTo() Di chuyển đường dẫn đến điểm chỉ định trên canvas mà không tạo đường.
closePath() Tạo đường dẫn từ điểm hiện tại trở về điểm bắt đầu.
lineTo() Thêm một điểm mới và tạo một đường từ điểm đó đến điểm cuối cùng được chỉ định trên canvas.
clip() Cắt bỏ bất kỳ hình dạng và kích thước nào từ canvas gốc.
quadraticCurveTo() Tạo đường Bezier hai điểm.
bezierCurveTo() Tạo đường Bezier ba điểm.
arc() Tạo đoạn tròn hoặc đường cong (dùng để tạo hình tròn hoặc phần tròn của hình tròn).
arcTo() Tạo đoạn tròn hoặc đường cong giữa hai đường thẳng.
isPointInPath() Nếu điểm chỉ định nằm trong đường dẫn hiện tại, thì trả về true, ngược lại trả về false.

Chuyển đổi

Phương pháp Mô tả
scale() Phóng to hoặc thu nhỏ hình ảnh hiện tại.
rotate() Chuyển động hình ảnh hiện tại.
translate() Định nghĩa lại vị trí (0,0) trên canvas.
transform() Thay thế ma trận变换 hiện tại của vẽ.
setTransform() Đặt lại变换 hiện tại thành ma trận đơn vị. Sau đó chạy transform().

Văn bản

Thuộc tính Mô tả
font Đặt hoặc trả về thuộc tính phông chữ của nội dung văn bản hiện tại.
textAlign Đặt hoặc trả về cách đối齐 nội dung văn bản hiện tại.
textBaseline Thiết lập hoặc trả về dòng cơ bản hiện tại được sử dụng để vẽ văn bản.
Phương pháp Mô tả
fillText() Vẽ văn bản 'lấp đầy' trên canvas.
strokeText() Vẽ văn bản trên canvas (không lấp đầy).
measureText() Trả về đối tượng chứa chiều rộng của văn bản được chỉ định.

Vẽ hình ảnh

Phương pháp Mô tả
drawImage() Vẽ hình ảnh, canvas hoặc video trên canvas.

Công tác xử lý pixel

Thuộc tính Mô tả
width Trả về chiều rộng của đối tượng ImageData.
height Trả về chiều cao của đối tượng ImageData.
data Trả về đối tượng chứa dữ liệu hình ảnh của đối tượng ImageData được chỉ định.
Phương pháp Mô tả
createImageData() Tạo đối tượng ImageData mới trống.
getImageData() Trả về đối tượng ImageData, đối tượng này sao chép dữ liệu pixel của hình tròn được chỉ định trên canvas.
putImageData() Đưa dữ liệu hình ảnh (từ đối tượng ImageData được chỉ định) trở lại canvas.

Hợp thành

Thuộc tính Mô tả
globalAlpha Thiết lập hoặc trả về giá trị alpha hoặc độ trong suốt hiện tại của việc vẽ.
globalCompositeOperation Thiết lập hoặc trả về cách vẽ hình ảnh mới lên hình ảnh hiện tại.

Khác

Phương pháp Mô tả
save() Lưu trạng thái hiện tại của ngữ cảnh.
restore() Trả về trạng thái và thuộc tính của đường dẫn đã lưu trước đó.
createEvent()
getContext()
toDataURL()

Thuộc tính và sự kiện tiêu chuẩn

Đối tượng canvas hỗ trợ đồng thời các tiêu chuẩnThuộc tínhSự kiện.

Trang liên quan

Hướng dẫn HTML:Canvas HTML5

Hướng dẫn hình ảnh HTML:Hướng dẫn Canvas HTML

Tài liệu tham khảo HTML:Thẻ <canvas> HTML