Java: Vẽ hình SVG 2D
SVG (Scalable Vector Graphics) là một ngôn ngữ dựa trên XML để xác định đồ họa dựa trên vector.
Trong JavaFX, chúng ta có thể tạo hình ảnh bằng cách phân tích cú pháp các đường dẫn SVG. Các hình dạng như vậy được đại diện bởi lớp có tên SVGPath. Lớp này thuộc về gói javafx.scene.shape.
Bằng cách khởi tạo lớp này, bạn có thể tạo một nút được tạo bằng cách phân tích cú pháp đường dẫn SVG trong JavaFX.
Lớp này có một thuộc tính có tên là nội dung của kiểu dữ liệu Chuỗi. Điều này đại diện cho chuỗi được mã hóa Đường dẫn SVG, từ đó hình ảnh sẽ được vẽ.
Để vẽ một hình dạng bằng cách phân tích cú pháp đường dẫn SVG, bạn cần chuyển các giá trị cho thuộc tính này, sử dụng phương thức có tên setContent () của lớp này như sau:
setContent(value);
Các bước để vẽ SVGPath
Để vẽ một hình dạng bằng cách phân tích cú pháp SVGPath trong JavaFX, hãy làm theo các bước dưới đây.
Bước 1: Tạo lớp học
Tạo một lớp Java và kế thừa lớp Ứng dụng của gói javafx.application và triển khai phương thức start () của lớp này như sau.
public class ClassName extends Application { @Override public void start(Stage primaryStage) throws Exception { } }
Bước 2: Tạo một đối tượng của lớp SVGPath
Bạn có thể tạo một hình dạng cần thiết trong JavaFX bằng cách phân tích cú pháp SVGPath. Để làm như vậy, hãy khởi tạo lớp có tên SVGPath thuộc về một gói javafx.scene.shape . Bạn có thể khởi tạo lớp này như sau.
//Creating an object of the class SVGPath SVGPath svgpath = new SVGPath();
Bước 3: Đặt SVGPath
Đặt nội dung cho đối tượng SVG bằng phương thức setContent () . Đối với phương pháp này, bạn cần phải chuyển SVGPath. Sử dụng nó, một hình dạng sẽ được vẽ dưới dạng một chuỗi như được hiển thị trong khối mã sau đây.
String path = "M 100 100 L 300 100 L 200 300 z"; //Setting the SVGPath in the form of string svgPath.setContent(path);
Bước 4: Tạo đối tượng nhóm
Trong phương thức start () , hãy tạo một đối tượng nhóm bằng cách khởi tạo lớp có tên Group , thuộc về gói javafx.scene .
Truyền đối tượng SVGPath (nút) được tạo ở bước trước làm tham số cho hàm tạo của lớp Nhóm. Điều này nên được thực hiện để thêm nó vào nhóm như sau:
Group root = new Group(svgpath);
Bước 5: Tạo một đối tượng cảnh
Tạo một Cảnh bằng cách khởi tạo lớp có tên Cảnh thuộc về gói javafx.scene. Lớp này truyền đối tượng Group (root) đã tạo ở bước trước.
Ngoài đối tượng gốc, bạn cũng có thể truyền hai tham số kép đại diện cho chiều cao và chiều rộng của màn hình cùng với đối tượng của lớp Nhóm như sau.
Scene scene = new Scene(group ,600, 300);
Bước 6: Đặt tiêu đề của sân khấu
Bạn có thể đặt tiêu đề cho vùng hiển thị bằng phương thức setTitle () của lớp Giai đoạn . Các primaryStage là một đối tượng Stage được truyền cho phương thức khởi đầu của lớp cảnh như một tham số.
Sử dụng đối tượng primaryStage , đặt tiêu đề của cảnh là Ứng dụng mẫu như sau.
primaryStage.setTitle("Sample Application");
Bước 7: Thêm cảnh vào sân khấu
Bạn có thể thêm một đối tượng Scene vào sân khấu bằng cách sử dụng phương thức setScene () của lớp có tên Giai đoạn . Thêm đối tượng Scene đã chuẩn bị ở các bước trước bằng cách sử dụng phương pháp này như sau.
primaryStage.setScene(scene);
Bước 8: Hiển thị nội dung của sân khấu
Hiển thị nội dung của cảnh bằng phương thức có tên show () của lớp Sân khấu như sau.
primaryStage.show();
Bước 9: Khởi chạy ứng dụng
Khởi chạy ứng dụng JavaFX bằng cách gọi phương thức tĩnh khởi chạy () của lớp Ứng dụng từ phương thức x main như sau.
public static void main(String args[]){ launch(args); }
Thí dụ
Sau đây là một chương trình tạo một hình dạng bằng cách phân tích cú pháp đường dẫn SVG bằng cách sử dụng JavaFX. Lưu mã này trong một tệp có tên SVGExample.java .
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.SVGPath; import javafx.stage.Stage; public class SVGExample extends Application { @Override public void start(Stage stage) { //Creating a SVGPath object SVGPath svgPath = new SVGPath(); String path = "M 100 100 L 300 100 L 200 300 z"; //Setting the SVGPath in the form of string svgPath.setContent(path); //Creating a Group object Group root = new Group(svgPath); //Creating a scene object Scene scene = new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle("Drawing a Sphere"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); } }
Biên dịch và thực thi tệp java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac SVGExample.java java SVGExample
Khi thực thi, chương trình trên tạo ra một cửa sổ JavaFX hiển thị một hình tam giác, được vẽ bằng cách phân tích cú pháp đường dẫn SVG như được hiển thị bên dưới.