Hướng dẫn how to draw a triangle in javascript - cách vẽ tam giác trong javascript
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. 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. 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ậtKhông giống như SVG, 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: 1Vẽ một hình chữ nhật đầy. 2Vẽ một phác thảo hình chữ nhật. 3Xó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ố. 4 và 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. 6 và 7 cung cấp kích thước của hình chữ nhật.Dưới đây là hàm 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
Đầu ra của ví dụ này được hiển thị bên dưới.
Hàm 9 vẽ một hình vuông màu đen lớn 100 pixel ở mỗi bên. Hàm 0 sau đó xóa một hình vuông 60x60 pixel từ trung tâm, và sau đó 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 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ẫnBâ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:
Dưới đây là các chức năng được sử dụng để thực hiện các bước sau: 3Tạ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ẫnPhương pháp để đặt các đường dẫn khác nhau cho các đối tượng. 4Thêm một đường thẳng vào đường dẫn, đi đến đầu đường dẫn phụ hiện tại. 5Vẽ hình dạng bằng cách vuốt ve phác thảo của nó. 6Vẽ 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 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 3, or on a newly created canvas, the first path construction command is always treated as a 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 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 6, any open shapes are closed automatically, so you don't have to call 4. This is not the case when you call 5.Vẽ một tam giácVí dụ, mã để vẽ một hình tam giác sẽ trông giống như thế này:
Kết quả trông như thế này:
Di chuyển bútMộ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 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. 5Di 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 3 được gọi, bạn thường sẽ muốn sử dụng hàm 9 để đặt điểm bắt đầu ở một nơi khác. Chúng tôi cũng có thể sử dụng 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 8 mà chúng ta đã thấy trước đó.
Kết quả trông như thế này:
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 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 3 được gọi, bạn thường sẽ muốn sử dụng hàm 9 để đặt điểm bắt đầu ở một nơi khác. Chúng tôi cũng có thể sử dụng 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. 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 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 9.Lưu ý: Để tìm hiểu thêm về hàm 3, hãy xem phần ARCS bên dưới.
Dòng
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 4 và 5. 6Khi Canvas được khởi tạo hoặc 3 được gọi, bạn thường sẽ muốn sử dụng hàm 9 để đặt điểm bắt đầu ở một nơi khác. Chúng tôi cũng có thể sử dụng 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. 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 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 9.Lưu ý: Để tìm hiểu thêm về hàm 8 function are measured in radians, not degrees. To convert degrees to radians you can use the following JavaScript expression: 7.Dòng Để vẽ các đường thẳng, hãy sử dụng phương pháp 4.Vẽ một dòng từ vị trí vẽ hiện tại đến vị trí được chỉ định bởi 4 và 5.Phương pháp này có hai đối số, 4 và 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 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.
Di chuyển bútMộ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 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. 7Vẽ 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 4 và 5, sử dụng điểm kiểm soát được chỉ định bởi 0 và 1. 2Vẽ 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 4 và 5, sử dụng các điểm kiểm soát được chỉ định bởi ( 0, 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. Các tham số 4 và 5 trong cả hai phương pháp này là tọa độ của điểm cuối. 0 và 1 là tọa độ của điểm điều khiển đầu tiên và 01 và 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 haiVí 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.
1
Đường cong hình khốiVí dụ này vẽ một trái tim bằng cách sử dụng các đường cong Bézier khối.
3
Đường cong hình khốiVí dụ này vẽ một trái tim bằng cách sử dụng các đường cong Bézier khối. 04Hì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 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 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.
5Thực hiện kết hợp
Đườ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ậtNgoà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 03, thêm đường dẫn hình chữ nhật đến một đường dẫn hiện đang mở. 15Vẽ 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. 15 constructor returns a newly instantiated 13 object, optionally with another path as an argument (creates a copy), or optionally with a string consisting of SVG path data. 6Trước khi phương thức này được thực thi, phương thức 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 25Cho đế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 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à 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ó. 7 8
Sử dụng đường dẫn SVGMột tính năng mạnh mẽ khác của API Canvas 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 ( 32) và sau đó di chuyển theo chiều ngang 80 điểm sang phải ( 33), sau đó xuống 80 điểm ( 34), sau đó 80 điểm ở bên trái ( 35), sau đó trở lại đầu ( 36). Bạn có thể thấy ví dụ này trên trang trình xây dựng 13. 9
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. |