Giới thiệu HTML5 Canvas
https://viblo.asia/p/gioi-thieu-html5-canvas-PjxMeV6gG4YL
Last updated
https://viblo.asia/p/gioi-thieu-html5-canvas-PjxMeV6gG4YL
Last updated
Bài đăng này đã không được cập nhật trong 2 năm
Canvas là một phần tử của HTML5, cho phép thực hiện lập trình kết xuất đồ họa các đối tượng hai chiều trên trang web. Canvas chiếm một khu vực trong trang web với chiều rộng và chiều cao định trước. Sau đó sử dụng Javascript có thể truy cập vào khu vực này để vẽ thông qua một tập các hàm đồ họa tương tự như các API 2D khác.
Bởi vì Canvas có thể giúp hiển thị trực quan một số hình ảnh dễ dàng trên trình duyệt như:
Các sơ đồ đơn giản
Trang trí thêm cho giao diện người dùng
Hình ảnh động
Biểu đồ và đồ thị
Có thể nhúng các ứng dụng vẽ
Hoạt động tốt với những hạn chế của CSS.
Sử dụng Canvas không khó nhưng bạn cần có 1 ít kiến thức về Html và Javascript. Một số trình duyệt cũ không hỗ trợ canvas, bạn nên sử dụng Firefox 1.5 trở về sau, Opera 9 hoặc phiên bản mới hơn… Bạn có thể tham khảo thêm tại đây: http://caniuse.com/canvas
Canvas chiếm một khu vực hình chữ nhật trên trang web mà kích thước của hình chữ nhật được quy định bởi nó. Lưu ý: Mặc định thẻ canvas sẽ không có đường viền và nội dung rỗng.
Khai báo thẻ như sau:
Lưu ý: Các thuộc tính và kích thước thường được xác định ngay bên trong thẻ canvas. Bạn có thể có nhiều thẻ <canvas>
trên một trang HTML. Mặc định, thẻ canvas chỉ có 2 phần tử: width
và height
. Nếu không được chỉ ra kích thước, thì kích thước mặc định là 300px
chiều rộng và 150px
chiều cao.
Ví dụ tạo đường viền cho thẻ canvas
Vẽ trên Canvas với Javascript
Giải thích cho ví dụ trên: Trước tiên, ta tìm đến thẻ <canvas>
thông qua id của nó:
Sau đó, gọi hàm getContext()
(nhập chuỗi “2d” vào):
Đối tượng getContext(“2d”)
trong HTML5 sở hữu nhiều hàm dành cho vẽ hình ảnh như hình hộp, hình tròn, chữ,… 2 dòng sau vẽ ra một hình chữ nhật:
Thuộc tính fillStyle
được dùng để gán CSS.
Thuộc tính fillRect(x,y,width,height)
để vẽ hình chữ nhật với các tham số tọa độ x,y, chiều rộng, chiều cao.
Góc trên cùng bên trái của đối tượng canvas có tọa độ (0,0)
.
Vậy nên, hàm fillRect()
ở trên được thiết lập các tham số (0,0,150,75)
có nghĩa là nằm sát phía trên bên trái và có kích thước là 150×75
pixels.
Canvas – Vẽ đường thẳng
Để vẽ đường thẳng trên một đối tượng canvas, ta sẽ dùng 2 hàm sau:
moveTo(x,y)
định điểm bắt đầu
lineTo(x,y)
định điểm kết thúc
Sau khi có 2 điểm ta phải dùng một trong những hàm vẽ đường thẳng, chẳng hạn như stroke()
.
Ví dụ: Định điểm bắt đầu (0,0)
và điểm kết thúc là (200,100)
. Sau đó dùng hàm stroke()
vẽ một đường thẳng
Kết quả
Canvas – Vẽ hình tròn
Để vẽ một hình tròn trên canvas, chúng ta sử dụng hàm arc()
:
arc(x,y,r,start,stop)
Sau khi xác định được tọa độ và bán kính, ta phải dùng một hàm vẽ nét chẳng hạn như stroke() hoặc fill().
Ví dụ: Tạo một hình tròn có tọa độ tại tâm là (100,50)
, bán kính 50
Canvas – Chữ
Để viết một đoạn văn bản, ta chú trọng đến thuộc tính và hàm sau:
font
– định kiểu chữ cho đoạn văn bản
fillText(text,x,y)
– Viết chữ trên ô canvas
strokeText(text,x,y)
– Viết chữ trên ô canvas nhưng không tô màu chữ
Ví dụ: Sử dụng fillText()
viết một đoạn văn bản có chiều cao là 30px
, dùng font Arial
Canvas – Gradients
Gradients dùng để tô hình chữ nhật, hình tròn,đường thẳng, văn bản...Có 2 loại gradients:
createLinearGradient(x,y,x1,y1)
– Quét màu xuất phát từ 1 phía
createRadialGradient(x,y,r,x1,y1,r1)
– Quét màu xuất phát từ tâm
Hàm addColorStop()
quy định điểm dừng quét màu dọc theo điểm quét(gradient). Điểm gradient có thể ở bất kỳ giữa 0
và 1
. Sau khi thiết lập gradient, ta dùng fillStyle
hoặc strokeStyle
để gán gradient vào ô canvas.
Ví dụ: Dùng createRadialGradient()
Canvas – Hình ảnh
Để vẽ hình ảnh trên một ô canvas, ta dùng hàm drawImage()
:
drawImage(image,x,y)
Ví dụ: Vẽ hình ảnh trên một ô canvas
Vẽ cờ Việt Nam: http://jsfiddle.net/z7werpqv/2/
Vẽ cờ Nhật Bản: http://jsfiddle.net/vs77sney/
Với việc sử dụng thư viện canvas
, ta đã có thêm một tùy chọn nữa trong việc vẽ đồ thị, hình động hoặc cao hơn là viết các game nhỏ.
Cám ơn các bạn đã đọc bài viết của mình và mong rằng chúng ta sẽ có những trao đổi hữu ích thông qua bài viết này.
Tọa độ Canvas Canvas là một dạng tọa độ lưới (x,y)
.
Kết quả
Kết quả
Kết quả:
Kết quả:
Kết quả:
Kết quả: