JavaFX - LineTo 路徑物件



在幾何學中,直線是最基本的圖形之一,它可以以不同的方式與其他圖形組合以建立更復雜的結構。例如,多邊形是由幾條線組成的封閉幾何圖形。在 JavaFX 中,使用基本 2D 形狀直線來構建這種複雜的圖形非常麻煩。因此,我們使用路徑物件在二維平面上從一個位置繪製到另一個位置。

使用 Path 類,我們可以在平面上從一個位置繪製到另一個位置以建立路徑物件。之前,我們已經看到過透過隨意使用 2D 形狀來構建奧運標誌、房屋等複雜圖形。在本章中,讓我們學習如何使用路徑來構建這種複雜的圖形。

JavaFX 路徑物件 LineTo

路徑元素line 用於從當前位置到指定座標中的某個點繪製一條直線。

它由名為LineTo 的類表示。此類屬於javafx.scene.shape 包。

此類具有兩個 double 資料型別的屬性,即:

  • X - 從當前位置繪製到該點的 x 座標。

  • Y - 從當前位置繪製到該點的 y 座標。

要繪製一條線,您需要為這些屬性傳遞值。這可以透過在例項化時按相同的順序將它們傳遞給此類的建構函式來完成;或者,透過使用它們各自的 setter 方法。

繪製 PathElement Line 的步驟

要在 JavaFX 中從當前位置繪製到指定點的直線,請按照以下步驟操作。

步驟 1:建立 Path 類物件

建立一個 Java 類並繼承javafx.application 包的Application 類,並在該類中實現start() 方法。然後在其中建立路徑類物件,如下所示。

public class ClassName extends Application {  
   @Override     
   public void start(Stage primaryStage) throws Exception {
      //Creating a Path object 
      Path path = new Path();   
   }    
}

步驟 2:設定路徑

建立MoveTo 路徑元素並將 XY 座標設定為線條的起點到座標 (100, 150)。這可以使用MoveTo 類的setX()setY() 方法完成,如下所示。

//Moving to the starting point 
MoveTo moveTo = new MoveTo(); 
moveTo.setX(100.0f); 
moveTo.setY(150.0f);

步驟 3:建立 LineTo 類的物件

透過例項化名為LineTo 的類來建立路徑元素線,該類屬於javafx.scene.shape 包,如下所示。

//Creating an object of the class LineTo  
LineTo lineTo = new LineTo(); 

步驟 4:設定線元素的屬性

指定從當前位置繪製到該點的座標。這可以透過使用其各自的 setter 方法設定屬性 x 和 y 來完成,如下面的程式碼塊所示。

//Setting the Properties of the line element 
lineTo.setX(500.0f); 
lineTo.setY(150.0f);

步驟 5:將元素新增到 Path 類的可觀察列表中

將前面步驟中建立的MoveToLineTo 路徑元素新增到Path 類的可觀察列表中,如下所示:

//Adding the path elements to Observable list of the Path class   
path.getElements().add(moveTo); 
path.getElements().add(lineTo); 

步驟 6:啟動應用程式

建立 LineTo 路徑物件後,請按照以下步驟正確啟動應用程式:

  • 首先,透過將 Group 物件作為引數值傳遞給其建構函式來例項化名為Scene 的類。對於此建構函式,您還可以將應用程式螢幕的尺寸作為可選引數傳遞。

  • 然後,使用Stage 類的setTitle() 方法設定舞臺的標題。

  • 現在,使用名為Stage 的類的setScene() 方法將 Scene 物件新增到舞臺。

  • 使用名為show() 的方法顯示場景的內容。

  • 最後,在launch() 方法的幫助下啟動應用程式。

示例 1

以下程式顯示瞭如何使用 JavaFX 的 Path 類從當前點到指定位置繪製一條直線。將此程式碼儲存在名為LineToExample.java 的檔案中。

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

public class LineToExample extends Application { 
   @Override 
   public void start(Stage stage) {
      //Creating a Path object 
      Path path = new Path();  
      
      //Moving to the starting point 
      MoveTo moveTo = new MoveTo(); 
      moveTo.setX(100.0f); 
      moveTo.setY(150.0f); 
         
      //Instantiating the LineTo class  
      LineTo lineTo = new LineTo(); 
         
      //Setting the Properties of the line element 
      lineTo.setX(500.0f); 
      lineTo.setY(150.0f);      
       
      //Adding the path elements to Observable list of the Path class   
      path.getElements().add(moveTo); 
      path.getElements().add(lineTo); 
         
      //Creating a Group object  
      Group root = new Group(path); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Drawing a Line"); 
         
      //Adding scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show(); 
   }
   public static void main(String args[]){ 
      launch(args); 
   } 
}   

使用以下命令從命令提示符編譯並執行儲存的 java 檔案。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls LineToExample.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls LineToExample

輸出

執行後,上述程式會生成一個 JavaFX 視窗,顯示一條從當前位置到指定點繪製的直線,如下所示。

LineTO

示例 2

不僅可以繪製單條線,還可以向 JavaFX 應用程式新增多條線以建立更復雜的形狀。在此示例中,我們將嘗試繪製一個簡單的十字圖形。將此程式碼儲存在名為LineToCross.java 的檔案中。

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

public class LineToCross extends Application { 
   @Override 
   public void start(Stage stage) {
      //Creating a Path object 
      Path path = new Path();  
      
      //Moving to the starting point 
      MoveTo moveTo = new MoveTo(); 
      moveTo.setX(100.0f); 
      moveTo.setY(150.0f); 
         
      //Instantiating the LineTo class  
      LineTo lineTo = new LineTo(); 
         
      //Setting the Properties of the line element 
      lineTo.setX(500.0f); 
      lineTo.setY(150.0f);      
       
      //Adding the path elements to Observable list of the Path class   
      path.getElements().add(moveTo); 
      path.getElements().add(lineTo); 
         
      //Creating a Group object  
      Group root = new Group(path); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Drawing a Line"); 
         
      //Adding scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show(); 
   }
   public static void main(String args[]){ 
      launch(args); 
   } 
}   

使用以下命令從命令提示符編譯並執行儲存的 java 檔案。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls LineToCross.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls LineToCross

輸出

執行後,上述程式會生成一個 JavaFX 視窗,顯示一個使用兩條不同線條繪製的十字結構,如下所示。

LineTO
廣告