Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để vẽ các hình dạng tùy chỉnh trong JavaFX bằng cách sử dụng lớp Path?


javafx.scene.shape gói cung cấp các lớp sử dụng mà bạn có thể vẽ các hình dạng 2D khác nhau, nhưng đây chỉ là các hình dạng nguyên thủy như đường thẳng, hình tròn, đa giác và hình elip, v.v.…

Do đó, nếu bạn muố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 đường dẫn

Lớp Path đại diện cho đường viền hình học của một hình dạng và được đính kèm với một danh sách có thể quan sát được chứa các Phần tử Đường dẫn khác nhau như MoveTo, LineTo, HlineTo, VlineTo, ArcTo, QuadCurveTo, CubicCurveTo.

Hàm tạo của lớp này chấp nhận các đối số biến kiểu PathElement và tạo một đường dẫn dựa trên các phần tử đường dẫn đã cho.

Ví dụ

Phần tử đường dẫn MoveTo được sử dụng để di chuyển vị trí hiện tại của đường dẫn đến một điểm được chỉ định và LineTo vẽ một đường thẳng từ tọa độ hiện tại đến tọa độ được chỉ định.

Trong ví dụ sau, chúng tôi đang cố gắng vẽ một hình dạng phức tạp tùy chỉnh bằng cách sử dụng các lớp MoveTo PathTo và Path -

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
public class ComplexShape extends Application {
   public void start(Stage stage) {
      //Drawing the shape
      MoveTo moveTo = new MoveTo(108, 71);
      LineTo line1 = new LineTo(321, 161);
      LineTo line2 = new LineTo(126,232);
      LineTo line3 = new LineTo(232,52);
      LineTo line4 = new LineTo(269, 250);
      LineTo line5 = new LineTo(108, 71);  
      //Creating a Path
      Path path = new Path(moveTo, line1, line2, line3, line4, line5);
      //Preparing the Stage object
      Group root = new Group(path);
      Scene scene = new Scene(root, 600, 300);
      stage.setTitle("Drawing an arc through a path");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

Đầu ra

Làm thế nào để vẽ các hình dạng tùy chỉnh trong JavaFX bằng cách sử dụng lớp Path?