Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

  • " Trước
  • Tiếp theo "

Bây giờ chúng tôi đã thiết lập môi trường vải của mình, chúng tôi có thể đi vào các chi tiết về cách vẽ trên vải. Đến cuối bài viết này, bạn sẽ học được cách vẽ hình chữ nhật, hình tam giác, đường, vòng cung và đường cong, cung cấp sự quen thuộc với một số hình dạng cơ bản. Làm việc với các đường dẫn là điều cần thiết khi vẽ các đối tượng lên khung vẽ và chúng ta sẽ thấy cách đó có thể được thực hiện.

Cái lưới sắt

Trước khi chúng ta có thể bắt đầu vẽ, chúng ta cần nói về lưới vải hoặc không gian phối hợp. Bộ xương HTML của chúng tôi từ trang trước có phần tử canvas rộng 150 pixel và cao 150 pixel.coordinate space. Our HTML skeleton from the previous page had a canvas element 150 pixels wide and 150 pixels high.

Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Thông thường 1 đơn vị trong lưới tương ứng với 1 pixel trên vải. Nguồn gốc của lưới này được đặt ở góc trên cùng bên trái tại tọa độ (0,0). Tất cả các yếu tố được đặt liên quan đến nguồn gốc này. Vì vậy, vị trí của góc trên bên trái của hình vuông màu xanh trở thành X pixel từ bên trái và y pixel từ trên cùng, ở tọa độ (x, y). Sau này trong hướng dẫn này, chúng ta sẽ xem cách chúng ta có thể dịch nguồn gốc sang một vị trí khác, xoay lưới và thậm chí mở rộng quy mô, nhưng bây giờ chúng ta sẽ bám vào mặc định.

Vẽ hình chữ nhật

Không giống như SVG,

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
0 chỉ hỗ trợ hai hình dạng nguyên thủy: hình chữ nhật và đường dẫn (danh sách các điểm được kết nối theo dòng). Tất cả các hình dạng khác phải được tạo bằng cách kết hợp một hoặc nhiều đường dẫn. May mắn thay, chúng tôi có một loại các chức năng vẽ đường dẫn giúp nó có thể tạo ra các hình dạng rất phức tạp.

Đầu tiên chúng ta hãy nhìn vào hình chữ nhật. Có ba chức năng vẽ hình chữ nhật trên vải:

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
1

Vẽ một hình chữ nhật đầy.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
2

Vẽ một phác thảo hình chữ nhật.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
3

Xóa diện tích hình chữ nhật được chỉ định, làm cho nó hoàn toàn trong suốt.

Mỗi trong ba chức năng này có cùng một tham số.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
4 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
5 Chỉ định vị trí trên vải (liên quan đến nguồn gốc) của góc trên cùng bên trái của hình chữ nhật.
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
6 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
7 cung cấp kích thước của hình chữ nhật.

Dưới đây là hàm

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
8 từ trang trước, nhưng bây giờ nó đang sử dụng ba chức năng này.

Ví dụ hình chữ nhật

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}

Đầu ra của ví dụ này được hiển thị bên dưới.

Ảnh chụp màn hìnhMẫu sống
Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Hàm

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
9 vẽ một hình vuông màu đen lớn 100 pixel ở mỗi bên. Hàm
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
0 sau đó xóa một hình vuông 60x60 pixel từ trung tâm, và sau đó
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
1 được gọi để tạo một đường viền hình chữ nhật 50x50 pixel trong hình vuông bị xóa.

Trong các trang sắp tới, chúng ta sẽ thấy hai phương pháp thay thế cho

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
0 và chúng ta cũng sẽ thấy cách thay đổi màu sắc và kiểu vuốt của các hình dạng được hiển thị.

Không giống như các chức năng đường dẫn mà chúng ta sẽ thấy trong phần tiếp theo, cả ba hàm hình chữ nhật đều vẽ ngay lập tức vào khung vẽ.

Vẽ đường dẫn

Bây giờ chúng ta hãy nhìn vào các con đường. Một đường dẫn là một danh sách các điểm, được kết nối bởi các phân đoạn của các dòng có thể có các hình dạng khác nhau, cong hoặc không, có chiều rộng khác nhau và màu sắc khác nhau. Một con đường, hoặc thậm chí là một đường dẫn phụ, có thể được đóng lại. Để tạo hình dạng bằng đường dẫn, chúng tôi thực hiện một số bước bổ sung:

  1. Đầu tiên, bạn tạo đường dẫn.
  2. Sau đó, bạn sử dụng các lệnh vẽ để vẽ vào đường dẫn.
  3. Khi đường dẫn đã được tạo ra, bạn có thể vuốt hoặc lấp đầy đường dẫn để kết xuất nó.

Dưới đây là các chức năng được sử dụng để thực hiện các bước sau:

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
3

Tạo ra một con đường mới. Sau khi được tạo, các lệnh vẽ trong tương lai được hướng vào đường dẫn và được sử dụng để xây dựng đường dẫn lên.

Phương pháp đường dẫn

Phương pháp để đặt các đường dẫn khác nhau cho các đối tượng.

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
4

Thêm một đường thẳng vào đường dẫn, đi đến đầu đường dẫn phụ hiện tại.

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
5

Vẽ hình dạng bằng cách vuốt ve phác thảo của nó.

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
6

Vẽ một hình dạng vững chắc bằng cách lấp đầy khu vực nội dung của đường dẫn.

Bước đầu tiên để tạo một đường dẫn là gọi

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
3. Trong nội bộ, các đường dẫn được lưu trữ dưới dạng danh sách các đường dẫn phụ (đường, vòng cung, v.v.) cùng nhau tạo thành một hình dạng. Mỗi khi phương thức này được gọi, danh sách được đặt lại và chúng ta có thể bắt đầu vẽ các hình dạng mới.

Lưu ý: Khi đường dẫn hiện tại trống, chẳng hạn như ngay sau khi gọi

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
3 hoặc trên một khung vẽ mới được tạo, lệnh xây dựng đường dẫn đầu tiên luôn được coi là
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9, bất kể nó thực sự là gì. Vì lý do đó, bạn hầu như sẽ luôn muốn đặt vị trí bắt đầu cụ thể của mình sau khi đặt lại đường dẫn.
When the current path is empty, such as immediately after calling
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
3, or on a newly created canvas, the first path construction command is always treated as a
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9, regardless of what it actually is. For that reason, you will almost always want to specifically set your starting position after resetting a path.

Bước thứ hai là gọi các phương thức thực sự chỉ định các đường dẫn được rút ra. Chúng ta sẽ thấy những điều này trong thời gian ngắn.

Bước thứ ba, và một bước tùy chọn, là gọi

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
4. Phương pháp này cố gắng đóng hình dạng bằng cách vẽ một đường thẳng từ điểm hiện tại đến đầu. Nếu hình dạng đã được đóng hoặc chỉ có một điểm trong danh sách, chức năng này không làm gì cả.

Lưu ý: Khi bạn gọi

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
6, mọi hình dạng mở đều được đóng tự động, vì vậy bạn không phải gọi
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
4. Đây không phải là trường hợp khi bạn gọi
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
5.
When you call
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
6, any open shapes are closed automatically, so you don't have to call
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
4. This is not the case when you call
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
5.

Vẽ một tam giác

Ví dụ, mã để vẽ một hình tam giác sẽ trông giống như thế này:

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}

Kết quả trông như thế này:

Ảnh chụp màn hìnhMẫu sống
Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Di chuyển bút

Một chức năng rất hữu ích, không thực sự vẽ bất cứ thứ gì nhưng trở thành một phần của danh sách đường dẫn được mô tả ở trên, là hàm

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9. Bạn có thể nghĩ tốt nhất về điều này khi nâng một cây bút hoặc bút chì từ một điểm trên một mảnh giấy và đặt nó vào phần tiếp theo.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>
5

Di chuyển bút đến các tọa độ được chỉ định bởi

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
4 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
5.

Khi Canvas được khởi tạo hoặc

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
3 được gọi, bạn thường sẽ muốn sử dụng hàm
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9 để đặt điểm bắt đầu ở một nơi khác. Chúng tôi cũng có thể sử dụng
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9 để vẽ các đường dẫn không kết nối. Hãy nhìn vào khuôn mặt cười bên dưới.

Để thử điều này cho chính mình, bạn có thể sử dụng đoạn mã bên dưới. Chỉ cần dán nó vào hàm

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
8 mà chúng ta đã thấy trước đó.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>

function draw() {
  const canvas = document.getElementById("canvas");
  if (canvas.getContext) {
    const ctx = canvas.getContext("2d");

    ctx.beginPath();
    ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle
    ctx.moveTo(110, 75);
    ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth (clockwise)
    ctx.moveTo(65, 65);
    ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye
    ctx.moveTo(95, 65);
    ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye
    ctx.stroke();
  }
}

Kết quả trông như thế này:

Ảnh chụp màn hìnhMẫu sống
Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Di chuyển bút

Một chức năng rất hữu ích, không thực sự vẽ bất cứ thứ gì nhưng trở thành một phần của danh sách đường dẫn được mô tả ở trên, là hàm

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9. Bạn có thể nghĩ tốt nhất về điều này khi nâng một cây bút hoặc bút chì từ một điểm trên một mảnh giấy và đặt nó vào phần tiếp theo. To learn more about the
function draw() {
  const canvas = document.getElementById("canvas");
  if (canvas.getContext) {
    const ctx = canvas.getContext("2d");

    ctx.beginPath();
    ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle
    ctx.moveTo(110, 75);
    ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth (clockwise)
    ctx.moveTo(65, 65);
    ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye
    ctx.moveTo(95, 65);
    ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye
    ctx.stroke();
  }
}
3 function, see the Arcs section below.

Di chuyển bút đến các tọa độ được chỉ định bởi 4 và 5.

Khi Canvas được khởi tạo hoặc

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
3 được gọi, bạn thường sẽ muốn sử dụng hàm
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9 để đặt điểm bắt đầu ở một nơi khác. Chúng tôi cũng có thể sử dụng
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9 để vẽ các đường dẫn không kết nối. Hãy nhìn vào khuôn mặt cười bên dưới.

function draw() {
  const canvas = document.getElementById("canvas");
  if (canvas.getContext) {
    const ctx = canvas.getContext("2d");

    ctx.beginPath();
    ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle
    ctx.moveTo(110, 75);
    ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth (clockwise)
    ctx.moveTo(65, 65);
    ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye
    ctx.moveTo(95, 65);
    ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye
    ctx.stroke();
  }
}
5

Để thử điều này cho chính mình, bạn có thể sử dụng đoạn mã bên dưới. Chỉ cần dán nó vào hàm

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
8 mà chúng ta đã thấy trước đó.

Nếu bạn muốn xem các dòng kết nối, bạn có thể xóa các dòng gọi

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9.

Lưu ý: Để tìm hiểu thêm về hàm

function draw() {
  const canvas = document.getElementById("canvas");
  if (canvas.getContext) {
    const ctx = canvas.getContext("2d");

    ctx.beginPath();
    ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle
    ctx.moveTo(110, 75);
    ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth (clockwise)
    ctx.moveTo(65, 65);
    ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye
    ctx.moveTo(95, 65);
    ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye
    ctx.stroke();
  }
}
3, hãy xem phần ARCS bên dưới.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    // Filled triangle
    ctx.beginPath();
    ctx.moveTo(25, 25);
    ctx.lineTo(105, 25);
    ctx.lineTo(25, 105);
    ctx.fill();

    // Stroked triangle
    ctx.beginPath();
    ctx.moveTo(125, 125);
    ctx.lineTo(125, 45);
    ctx.lineTo(45, 125);
    ctx.closePath();
    ctx.stroke();
  }
}

Dòng

Ảnh chụp màn hìnhMẫu sống
Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Di chuyển bút

Một chức năng rất hữu ích, không thực sự vẽ bất cứ thứ gì nhưng trở thành một phần của danh sách đường dẫn được mô tả ở trên, là hàm function draw() { const canvas = document.getElementById('canvas'); if (canvas.getContext) { const ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(75, 50); ctx.lineTo(100, 75); ctx.lineTo(100, 25); ctx.fill(); } } 9. Bạn có thể nghĩ tốt nhất về điều này khi nâng một cây bút hoặc bút chì từ một điểm trên một mảnh giấy và đặt nó vào phần tiếp theo.

Di chuyển bút đến các tọa độ được chỉ định bởi

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
4 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
5.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>
6

Khi Canvas được khởi tạo hoặc

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
3 được gọi, bạn thường sẽ muốn sử dụng hàm
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9 để đặt điểm bắt đầu ở một nơi khác. Chúng tôi cũng có thể sử dụng
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9 để vẽ các đường dẫn không kết nối. Hãy nhìn vào khuôn mặt cười bên dưới.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>
7

Để thử điều này cho chính mình, bạn có thể sử dụng đoạn mã bên dưới. Chỉ cần dán nó vào hàm

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
8 mà chúng ta đã thấy trước đó.

Nếu bạn muốn xem các dòng kết nối, bạn có thể xóa các dòng gọi

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9.

Lưu ý: Để tìm hiểu thêm về hàm

function draw() {
  const canvas = document.getElementById("canvas");
  if (canvas.getContext) {
    const ctx = canvas.getContext("2d");

    ctx.beginPath();
    ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle
    ctx.moveTo(110, 75);
    ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth (clockwise)
    ctx.moveTo(65, 65);
    ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye
    ctx.moveTo(95, 65);
    ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye
    ctx.stroke();
  }
}
3, hãy xem phần ARCS bên dưới. Angles in the
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>
8 function are measured in radians, not degrees. To convert degrees to radians you can use the following JavaScript expression:
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    // Filled triangle
    ctx.beginPath();
    ctx.moveTo(25, 25);
    ctx.lineTo(105, 25);
    ctx.lineTo(25, 105);
    ctx.fill();

    // Stroked triangle
    ctx.beginPath();
    ctx.moveTo(125, 125);
    ctx.lineTo(125, 45);
    ctx.lineTo(45, 125);
    ctx.closePath();
    ctx.stroke();
  }
}
7.

Dòng

Để vẽ các đường thẳng, hãy sử dụng phương pháp

function draw() {
  const canvas = document.getElementById("canvas");
  if (canvas.getContext) {
    const ctx = canvas.getContext("2d");

    ctx.beginPath();
    ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle
    ctx.moveTo(110, 75);
    ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth (clockwise)
    ctx.moveTo(65, 65);
    ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye
    ctx.moveTo(95, 65);
    ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye
    ctx.stroke();
  }
}
4.

Vẽ một dòng từ vị trí vẽ hiện tại đến vị trí được chỉ định bởi

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
4 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
5.

Phương pháp này có hai đối số,

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
4 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
5, là tọa độ của điểm cuối của dòng. Điểm bắt đầu phụ thuộc vào các đường dẫn được vẽ trước đó, trong đó điểm cuối của đường dẫn trước là điểm bắt đầu cho phần sau, v.v ... Điểm bắt đầu cũng có thể được thay đổi bằng cách sử dụng phương thức
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9.

Ví dụ dưới đây vẽ hai hình tam giác, một hình đầy và một được phác thảo. This example requires a slightly larger canvas than the others on this page: 150 x 200 pixels.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="200">canvas>
  body>
html>

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    for (let i = 0; i < 4; i++) {
      for (let j = 0; j < 3; j++) {
        ctx.beginPath();
        const x = 25 + j * 50; // x coordinate
        const y = 25 + i * 50; // y coordinate
        const radius = 20; // Arc radius
        const startAngle = 0; // Starting point on circle
        const endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle
        const counterclockwise = i % 2 !== 0; // clockwise or counterclockwise

        ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);

        if (i > 1) {
          ctx.fill();
        } else {
          ctx.stroke();
        }
      }
    }
  }
}

Ảnh chụp màn hìnhMẫu sống
Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Di chuyển bút

Một chức năng rất hữu ích, không thực sự vẽ bất cứ thứ gì nhưng trở thành một phần của danh sách đường dẫn được mô tả ở trên, là hàm

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9. Bạn có thể nghĩ tốt nhất về điều này khi nâng một cây bút hoặc bút chì từ một điểm trên một mảnh giấy và đặt nó vào phần tiếp theo.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="200">canvas>
  body>
html>
7

Vẽ một đường cong Bézier bậc hai từ vị trí PEN hiện tại đến điểm cuối được chỉ định bởi

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
4 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
5, sử dụng điểm kiểm soát được chỉ định bởi
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    for (let i = 0; i < 4; i++) {
      for (let j = 0; j < 3; j++) {
        ctx.beginPath();
        const x = 25 + j * 50; // x coordinate
        const y = 25 + i * 50; // y coordinate
        const radius = 20; // Arc radius
        const startAngle = 0; // Starting point on circle
        const endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle
        const counterclockwise = i % 2 !== 0; // clockwise or counterclockwise

        ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);

        if (i > 1) {
          ctx.fill();
        } else {
          ctx.stroke();
        }
      }
    }
  }
}
0 và
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    for (let i = 0; i < 4; i++) {
      for (let j = 0; j < 3; j++) {
        ctx.beginPath();
        const x = 25 + j * 50; // x coordinate
        const y = 25 + i * 50; // y coordinate
        const radius = 20; // Arc radius
        const startAngle = 0; // Starting point on circle
        const endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle
        const counterclockwise = i % 2 !== 0; // clockwise or counterclockwise

        ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);

        if (i > 1) {
          ctx.fill();
        } else {
          ctx.stroke();
        }
      }
    }
  }
}
1.

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    for (let i = 0; i < 4; i++) {
      for (let j = 0; j < 3; j++) {
        ctx.beginPath();
        const x = 25 + j * 50; // x coordinate
        const y = 25 + i * 50; // y coordinate
        const radius = 20; // Arc radius
        const startAngle = 0; // Starting point on circle
        const endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle
        const counterclockwise = i % 2 !== 0; // clockwise or counterclockwise

        ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);

        if (i > 1) {
          ctx.fill();
        } else {
          ctx.stroke();
        }
      }
    }
  }
}
2

Vẽ một đường cong Bézier hình khối từ vị trí bút hiện tại đến điểm cuối được chỉ định bởi

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
4 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
5, sử dụng các điểm kiểm soát được chỉ định bởi (
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    for (let i = 0; i < 4; i++) {
      for (let j = 0; j < 3; j++) {
        ctx.beginPath();
        const x = 25 + j * 50; // x coordinate
        const y = 25 + i * 50; // y coordinate
        const radius = 20; // Arc radius
        const startAngle = 0; // Starting point on circle
        const endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle
        const counterclockwise = i % 2 !== 0; // clockwise or counterclockwise

        ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);

        if (i > 1) {
          ctx.fill();
        } else {
          ctx.stroke();
        }
      }
    }
  }
}
0,
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    for (let i = 0; i < 4; i++) {
      for (let j = 0; j < 3; j++) {
        ctx.beginPath();
        const x = 25 + j * 50; // x coordinate
        const y = 25 + i * 50; // y coordinate
        const radius = 20; // Arc radius
        const startAngle = 0; // Starting point on circle
        const endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle
        const counterclockwise = i % 2 !== 0; // clockwise or counterclockwise

        ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);

        if (i > 1) {
          ctx.fill();
        } else {
          ctx.stroke();
        }
      }
    }
  }
}
1) và (CP2X, CP2Y).

Sự khác biệt giữa những điều này là một đường cong Bézier bậc hai có điểm bắt đầu và điểm cuối (các chấm màu xanh) và chỉ một điểm điều khiển (được biểu thị bằng chấm đỏ) trong khi đường cong Bézier khối sử dụng hai điểm điều khiển.control point (indicated by the red dot) while a cubic Bézier curve uses two control points.

Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Các tham số

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
4 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
5 trong cả hai phương pháp này là tọa độ của điểm cuối.
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    for (let i = 0; i < 4; i++) {
      for (let j = 0; j < 3; j++) {
        ctx.beginPath();
        const x = 25 + j * 50; // x coordinate
        const y = 25 + i * 50; // y coordinate
        const radius = 20; // Arc radius
        const startAngle = 0; // Starting point on circle
        const endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle
        const counterclockwise = i % 2 !== 0; // clockwise or counterclockwise

        ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);

        if (i > 1) {
          ctx.fill();
        } else {
          ctx.stroke();
        }
      }
    }
  }
}
0 và
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    for (let i = 0; i < 4; i++) {
      for (let j = 0; j < 3; j++) {
        ctx.beginPath();
        const x = 25 + j * 50; // x coordinate
        const y = 25 + i * 50; // y coordinate
        const radius = 20; // Arc radius
        const startAngle = 0; // Starting point on circle
        const endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle
        const counterclockwise = i % 2 !== 0; // clockwise or counterclockwise

        ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);

        if (i > 1) {
          ctx.fill();
        } else {
          ctx.stroke();
        }
      }
    }
  }
}
1 là tọa độ của điểm điều khiển đầu tiên và
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
01 và
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
02 là tọa độ của điểm điều khiển thứ hai.

Sử dụng các đường cong Bézier bậc hai và khối có thể khá khó khăn, bởi vì không giống như phần mềm vẽ vector như Adobe Illustrator, chúng tôi không có phản hồi trực quan trực tiếp về những gì chúng tôi đang làm. Điều này làm cho nó khá khó để vẽ các hình dạng phức tạp. Trong ví dụ sau, chúng tôi sẽ vẽ một số hình dạng hữu cơ đơn giản, nhưng nếu bạn có thời gian và, hầu hết, sự kiên nhẫn, hình dạng phức tạp hơn nhiều có thể được tạo ra.

Không có gì rất khó khăn trong những ví dụ này. Trong cả hai trường hợp, chúng ta thấy một sự kế thừa của các đường cong được vẽ cuối cùng dẫn đến một hình dạng hoàn chỉnh.

Đường cong bậc hai

Ví dụ này sử dụng nhiều đường cong Bézier bậc hai để hiển thị một quả bóng phát biểu.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
1

Ảnh chụp màn hìnhMẫu sống
Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Đường cong hình khối

Ví dụ này vẽ một trái tim bằng cách sử dụng các đường cong Bézier khối.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
3

Ảnh chụp màn hìnhMẫu sống
Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Đường cong hình khối

Ví dụ này vẽ một trái tim bằng cách sử dụng các đường cong Bézier khối.

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
04

Hình chữ nhật

Ngoài ba phương pháp mà chúng tôi đã thấy trong việc vẽ hình chữ nhật, vẽ hình dạng hình chữ nhật trực tiếp vào khung vẽ, cũng có phương thức

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
03, thêm đường dẫn hình chữ nhật đến một đường dẫn hiện đang mở.

Vẽ một hình chữ nhật có góc trên bên trái được chỉ định bởi ( 4, 5) với 6 và 7 được chỉ định.

Trước khi phương thức này được thực thi, phương thức

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9 được tự động gọi với các tham số (x, y). Nói cách khác, vị trí bút hiện tại được tự động đặt lại về tọa độ mặc định.

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="150" height="150">canvas>
  body>
html>

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
5

Thực hiện kết hợp

Ảnh chụp màn hìnhMẫu sống
Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Đường cong hình khối

Ví dụ này vẽ một trái tim bằng cách sử dụng các đường cong Bézier khối.

Hình chữ nhật

Ngoài ba phương pháp mà chúng tôi đã thấy trong việc vẽ hình chữ nhật, vẽ hình dạng hình chữ nhật trực tiếp vào khung vẽ, cũng có phương thức

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
03, thêm đường dẫn hình chữ nhật đến một đường dẫn hiện đang mở.

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
15

Vẽ một hình chữ nhật có góc trên bên trái được chỉ định bởi (

<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
4,
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
5) với
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
6 và
<html lang="en">
  <body onload="draw();">
    <canvas id="canvas" width="100" height="100">canvas>
  body>
html>
7 được chỉ định.
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
15
constructor returns a newly instantiated
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
13 object, optionally with another path as an argument (creates a copy), or optionally with a string consisting of SVG path data.

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
6

Trước khi phương thức này được thực thi, phương thức

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.moveTo(75, 50);
    ctx.lineTo(100, 75);
    ctx.lineTo(100, 25);
    ctx.fill();
  }
}
9 được tự động gọi với các tham số (x, y). Nói cách khác, vị trí bút hiện tại được tự động đặt lại về tọa độ mặc định.

Thực hiện kết hợp

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
25

Cho đến nay, mỗi ví dụ trên trang này chỉ sử dụng một loại hàm đường dẫn trên mỗi hình dạng. Tuy nhiên, không có giới hạn đối với số hoặc loại đường dẫn bạn có thể sử dụng để tạo hình dạng. Vì vậy, trong ví dụ cuối cùng này, hãy kết hợp tất cả các chức năng đường dẫn để tạo ra một tập hợp các nhân vật trò chơi rất nổi tiếng.

Hình ảnh kết quả trông như thế này:

Chúng tôi sẽ không xem xét điều này một cách chi tiết, vì nó thực sự đơn giản đến mức đáng ngạc nhiên. Những điều quan trọng nhất cần lưu ý là việc sử dụng thuộc tính

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
10 trên bối cảnh vẽ và sử dụng hàm tiện ích (trong trường hợp này là
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
11). Sử dụng các chức năng tiện ích cho các bit của bản vẽ bạn thường có thể rất hữu ích và giảm lượng mã bạn cần, cũng như sự phức tạp của nó.

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
7

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
8

Ảnh chụp màn hìnhMẫu sống
Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript

Sử dụng đường dẫn SVG

Một tính năng mạnh mẽ khác của API Canvas

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
13 mới là sử dụng dữ liệu đường dẫn SVG để khởi tạo các đường dẫn trên khung vẽ của bạn. Điều này có thể cho phép bạn truyền qua dữ liệu đường dẫn và sử dụng lại chúng trong cả hai, SVG và Canvas.

Đường dẫn sẽ di chuyển đến điểm (

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
32) và sau đó di chuyển theo chiều ngang 80 điểm sang phải (
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
33), sau đó xuống 80 điểm (
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
34), sau đó 80 điểm ở bên trái (
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
35), sau đó trở lại đầu (
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
36). Bạn có thể thấy ví dụ này trên trang trình xây dựng
function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
13.

function draw() {
  const canvas = document.getElementById('canvas');
  if (canvas.getContext) {
    const ctx = canvas.getContext('2d');

    ctx.fillRect(25, 25, 100, 100);
    ctx.clearRect(45, 45, 60, 60);
    ctx.strokeRect(50, 50, 50, 50);
  }
}
9

  • " Trước
  • Tiếp theo "

Các hình dạng trong JavaScript là gì?

Constructors..
Hình dạng.circle (trung tâm, bán kính) tạo ra một mục hình tròn.....
Hình dạng.circle (đối tượng) ....
Hình dạng.Rectangle (Hình chữ nhật [, bán kính]) ....
Hình dạng.Rectangle (điểm, kích thước) ....
Hình dạng.RECTANGLE (từ, đến) ....
Hình dạng.RECTANGLE (Đối tượng) ....
SHAPE.ellipse (hình chữ nhật) ....
Shape.Ellipse(object).

Mã để vẽ một hình chữ nhật trong JavaScript là gì?

Phương thức trực tràng () tạo ra một hình chữ nhật.Mẹo: Sử dụng phương thức đột quỵ () hoặc fill () để thực sự vẽ hình chữ nhật trên khung vẽ.rect() method creates a rectangle. Tip: Use the stroke() or the fill() method to actually draw the rectangle on the canvas.

Chúng ta có thể vẽ hình dạng trong HTML5 không?

Bạn có thể vẽ các hình dạng như vòng tròn, hình chữ nhật, đường, vv bằng SVG trong HTML5 một cách dễ dàng.Hãy xem một ví dụ để vẽ một hình chữ nhật bằng SVG.. Let's see an example to draw a rectangle using SVG.