Giới thiệu
hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !
Liên hệ quảng cáo: trienkhaiweb@gmail.com
Trong bài này chúng ta sẽ tìm hiểu cách vẽ một đường thẳng trong Canvas.
1. Vẽ đường thẳng trong Canvas
Một đường thẳng sẽ có những tính chất sau:
Mục lục
Để vẽ đường thẳng chúng ta phải xác định vị trí bắt đầu và vị trí kết thúc, mỗi vị trí sẽ được xác định bởi khoảng cách so với lề trái và khoảng cách so với lề trên (trái, trên)
.
<canvas id="myCanvas" width="400" height="200"></canvas>
<script>
// Lấy đối tượng Canvas
var canvas = document.getElementById('myCanvas');
// Chọn đối tượng vẽ 2D
var context = canvas.getContext('2d');
// Tiến hành vẽ
context.beginPath(); // Khai báo vẽ đường thẳng mới
context.moveTo(10, 10); // Điểm bắt đầu
context.lineTo(490, 190); // Điểm kết thúc
context.stroke(); // Tiến hành vẽ
</script>
Trong đó chúng ta có:
beginPath()
để khai báo một đường thẳng mớimoveTo(position)
để xác định điểm bắt đầu.lineTo(position)
để xác định điểm kết thúcstroke()
để tiến hành vẽ.Để chọn chiều rộng cho đường thẳng thì ta sử dụng thuộc tính lineWidth
, để chọn màu ta sử dụng thuộc tính strokeStyle
.
// Lấy đối tượng Canvas
var canvas = document.getElementById('myCanvas');
// Chọn đối tượng vẽ 2D
var context = canvas.getContext('2d');
// Tiến hành vẽ
context.beginPath(); // Khai báo vẽ đường thẳng mới
context.moveTo(10, 10); // Điểm bắt đầu
context.lineTo(380, 180); // Điểm kết thúc
context.lineWidth = 15; // rộng 15px
context.strokeStyle = 'blue';// Màu xanh
context.stroke(); // Tiến hành vẽ
Kết quả:
Định dạng hai đầu đường thẳng hay còn gọi là Line Cap.
Để định dạng line Cap thì ta sử dụng thuộc tính lineCap
và nó sẽ có một trong ba giá trị sau:
/*CANVAS THỨ NHẤT*/
var canvas = document.getElementById('myCanvas1');
var context = canvas.getContext('2d');
// Tiến hành vẽ
context.beginPath(); // Khai báo vẽ đường thẳng mới
context.moveTo(10, 10); // Điểm bắt đầu
context.lineTo(190, 10); // Điểm kết thúc
context.lineWidth = 15; // rộng 15px
context.strokeStyle = 'blue';// Màu xanh
context.lineCap = 'butt';
context.stroke(); // Tiến hành vẽ
/*CANVAS THỨ HAI*/
var canvas = document.getElementById('myCanvas2');
var context = canvas.getContext('2d');
// Tiến hành vẽ
context.beginPath(); // Khai báo vẽ đường thẳng mới
context.moveTo(10, 10); // Điểm bắt đầu
context.lineTo(190, 10); // Điểm kết thúc
context.lineWidth = 15; // rộng 15px
context.strokeStyle = 'pink';// Màu hồng
context.lineCap = 'round';
context.stroke(); // Tiến hành vẽ
/*CANVAS THỨ BA*/
var canvas = document.getElementById('myCanvas3');
var context = canvas.getContext('2d');
// Tiến hành vẽ
context.beginPath(); // Khai báo vẽ đường thẳng mới
context.moveTo(10, 10); // Điểm bắt đầu
context.lineTo(190, 10); // Điểm kết thúc
context.lineWidth = 15; // rộng 15px
context.strokeStyle = 'red';// Màu đỏ
context.lineCap = 'square';
context.stroke(); // Tiến hành vẽ
2. Vẽ đường thẳng nối liên tiếp trong Canvas
Các ví dụ trên chỉ dừng lại ở mức vẽ một đường thẳng, tuy nhiên bạn có thể vẽ nhiều đường thẳng liên tiếp bằng cách sử dụng hàm lineTo()
.
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
// Tiến hành vẽ
context.beginPath(); // Khai báo vẽ đường thẳng mới
context.moveTo(10, 10); // Điểm bắt đầu
context.lineTo(390, 10); // Điểm giữa
context.lineTo(20, 190); // Điểm giữa
context.lineTo(390, 190); // Điểm kết thúc
context.lineWidth = 15; // rộng 15px
context.strokeStyle = 'blue';// Màu xanh
context.lineCap = 'butt';
context.stroke(); // Tiến hành vẽ
2. Lời kết
Như vậy để vẽ một đường thẳng thì ta phải xác định hai điểm ở hai đầu của đường thẳng, mỗi đường thẳng sẽ có một số thuộc tính bổ sung như chiều rộng của đường, màu của đường và định dạng hai đầu của đường.
Bài này kết thúc tại đây, bài tiếp theo chúng ta tìm hiểu cách vẽ Curves.
hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !
Liên hệ quảng cáo: trienkhaiweb@gmail.com
1 Comments