Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Các phần tử đường dẫn (Path Elements) trong JavaFX

Gói javafx.scene.shape cung cấp các lớp để vẽ các hình dạng 2D cơ bản như đường thẳng, hình tròn, đa giác, elip... Tuy nhiên, để vẽ các hình dạng tùy chỉnh phức tạp, bạn cần sử dụng lớp Path.

Lớp Path

Lớp Path đại diện cho đường viền hình học của một hình dạng, cho phép bạn vẽ đường dẫn tùy chỉnh. JavaFX cung cấp nhiều phần tử đường dẫn (path elements) dưới dạng các lớp trong gói javafx.scene.shape.

Các loại Path Element chính

  • LineTo - Vẽ đường thẳng từ tọa độ hiện tại đến tọa độ mới.
  • HLineTo - Vẽ đường thẳng ngang từ tọa độ hiện tại đến tọa độ mới.
  • VLineTo - Vẽ đường thẳng dọc từ tọa độ hiện tại đến tọa độ mới.
  • QuadCurveTo - Vẽ đường cong bậc hai từ tọa độ hiện tại đến tọa độ mới.
  • CubicCurveTo - Vẽ đường cong bậc ba từ tọa độ hiện tại đến tọa độ mới.
  • ArcTo - Vẽ cung elip từ tọa độ hiện tại đến tọa độ mới.
  • MoveTo - Di chuyển điểm bắt đầu đường dẫn đến tọa độ mới.

Tạo đường dẫn sử dụng Path Elements

Lớp Path chứa một danh sách quan sát lưu trữ các phần tử đường dẫn. Để vẽ một đường dẫn:

  1. Khởi tạo các lớp PathElement cần thiết.
  2. Thiết lập thuộc tính cho từng phần tử đường dẫn qua setter hoặc constructor.
  3. Khởi tạo lớp Path.
  4. Lấy danh sách quan sát bằng phương thức getElements().
  5. Thêm tất cả các đối tượng phần tử đường dẫn vào danh sách theo thứ tự mong muốn bằng add() hoặc addAll().
  6. Thêm Path vào đối tượng Group.

Lưu ý: Bạn cũng có thể truyền trực tiếp các phần tử đường dẫn vào constructor của lớp Path.

Ví dụ minh họa

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;

public class PathElementsExample extends Application {
    @Override
    public void start(Stage stage) {
        // Vẽ hình dạng
        MoveTo moveTo = new MoveTo(208, 71);
        LineTo line1 = new LineTo(421, 161);
        LineTo line2 = new LineTo(226, 232);
        LineTo line3 = new LineTo(332, 52);
        LineTo line4 = new LineTo(369, 250);
        LineTo line5 = new LineTo(208, 71);
        
        // Tạo Path - truyền trực tiếp vào constructor
        Path path = new Path(moveTo, line1, line2, line3, line4, line5);
        path.setFill(Color.DARKCYAN);
        path.setStrokeWidth(8.0);
        path.setStroke(Color.DARKSLATEGREY);
        
        // Chuẩn bị Stage
        Group root = new Group(path);
        Scene scene = new Scene(root, 595, 300, Color.BEIGE);
        stage.setTitle("Ví dụ Path Elements");
        stage.setScene(scene);
        stage.show();
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}

Kết quả đầu ra

Các phần tử đường dẫn (Path Elements) trong JavaFX