Java: Vẽ đường cong hình khối (CubicCurve) 2D
Một CubicCurve được mô tả bởi một hàm đa thức bậc ba của hai biến và có thể được viết dưới dạng sau:
Các đường cong Bezier này thường được sử dụng trong đồ họa máy tính. Chúng là các đường cong tham số có vẻ trơn tru hợp lý ở mọi quy mô. Các đường cong này được vẽ dựa trên các điểm trên mặt phẳng XY.
Đường cong hình khối là một đường cong tham số Bezier trong mặt phẳng XY là một đường cong bậc 3. Nó được vẽ bằng cách sử dụng bốn điểm - Điểm bắt đầu, Điểm cuối, Điểm điều khiển và Điểm điều khiển2 như thể hiện trong sơ đồ sau.
Trong JavaFX, một CubicCurve được đại diện bởi một lớp có tên là CubicCurve . 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 CubicCurve trong JavaFX.
Lớp này có 8 thuộc tính của kiểu dữ liệu kép, cụ thể là:
-
startX - Tọa độ x của điểm bắt đầu của đường cong.
-
startY - Tọa độ y của điểm bắt đầu của đường cong.
-
controlX1 - Tọa độ x của điểm điều khiển đầu tiên của đường cong.
-
controlY1 - Tọa độ y của điểm điều khiển đầu tiên của đường cong.
-
controlX2 - Tọa độ x của điểm điều khiển thứ hai của đường cong.
-
controlY2 - Tọa độ y của điểm điều khiển thứ hai của đường cong.
-
endX - Tọa độ x của điểm cuối của đường cong.
-
endY - Tọa độ y của điểm cuối của đường cong.
Để vẽ một đường cong khối, bạn cần truyền các giá trị cho các thuộc tính này, bằng cách chuyển chúng đến hàm tạo của lớp này, theo cùng một thứ tự, tại thời điểm khởi tạo, như được hiển thị bên dưới:
CubicCurve cubiccurve = new CubicCurve( startX, startY, controlX1, controlY1, controlX2, controlY2, endX, endY);
Hoặc, bằng cách sử dụng các phương pháp setter tương ứng của chúng như sau:
setStartX(value); setStartY(value); setControlX1(value); setControlY1(value); setControlX2(value); setControlY2(value); setEndX(value); setEndY(value);
Các bước để vẽ CubicCurve
Để vẽ một đường cong khối Bezier 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 CubicCurve
Bạn có thể tạo một CubicCurve trong JavaFX bằng cách khởi tạo lớp có tên CubicCurve 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 CubicCurve CubicCurve cubiccurve = new CubicCurve();
Bước 3: Đặt thuộc tính cho CubicCurve
Chỉ định tọa độ x, y của bốn điểm: điểm bắt đầu, điểm kết thúc, điểm điều khiển1 và điểm điều khiển 2 của đường cong yêu cầu, sử dụng các phương pháp setter tương ứng của chúng như được hiển thị trong khối mã sau.
//Setting properties to cubic curve cubicCurve.setStartX(100.0f); cubicCurve.setStartY(150.0f); cubicCurve.setControlX1(400.0f); cubicCurve.setControlY1(40.0f); cubicCurve.setControlX2(175.0f); cubicCurve.setControlY2(250.0f); cubicCurve.setEndX(500.0f); cubicCurve.setEndY(150.0f);
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 .
Chuyển đối tượng CubicCurve (nút) được tạo ở bước trước làm tham số cho hàm tạo của lớp Nhóm để thêm nó vào nhóm như sau:
Group root = new Group(cubiccurve);
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.
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 chính như sau.
public static void main(String args[]){ launch(args); }
Thí dụ
Sau đây là một chương trình tạo Bezier CubicCurve bằng cách sử dụng JavaFX. Lưu mã này trong một tệp với tên CubicCurveExample.java .
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.shape.CubicCurve; public class CubicCurveExample extends Application { @Override public void start(Stage stage) { //Drawing a cubic curve CubicCurve cubicCurve = new CubicCurve(); //Setting properties to cubic curve cubicCurve.setStartX(100.0f); cubicCurve.setStartY(150.0f); cubicCurve.setControlX1(400.0f); cubicCurve.setControlY1(40.0f); cubicCurve.setControlX2(175.0f); cubicCurve.setControlY2(250.0f); cubicCurve.setEndX(500.0f); cubicCurve.setEndY(150.0f); //Creating a Group object Group root = new Group(cubicCurve); //Creating a scene object Scene scene = new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle("Drawing a cubic curve"); //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 CubicCurveExample.java java CubicCurveExample
Khi thực thi, chương trình trên tạo ra một cửa sổ JavaFX hiển thị một đường cong hình khối Bezier như hình dưới đây.