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
广告