JavaFX - 绘图模式属性



您可以使用 Shape3D 类在 JavaFX 应用程序中绘制 3D 形状。此类允许您构建三种类型的 3D 形状:长方体、圆柱体和球体作为其直接子类。

但是,根据您尝试创建的 JavaFX 应用程序的性质,您还可以使用 Shape3D 类提供的属性来增强 3D 形状的外观。有三个这样的属性可以应用于 JavaFX 应用程序的 3D 形状。它们列举如下:

  • 剔除面属性

  • 绘图模式属性

  • 材质属性

在本节中,我们将学习 JavaFX 中的绘图模式属性。

绘图模式属性

绘图模式是属于DrawMode枚举类型的属性,它表示用于绘制当前 3D 形状的绘图模式类型。在 JavaFX 中,您可以选择两种绘图模式来绘制 3D 形状,它们是:

  • 填充 - 此模式绘制并填充 2D 形状 (DrawMode.FILL)。

  • 线条 - 此模式使用线条绘制 3D 形状 (DrawMode.LINE)。

默认情况下,三维形状的绘图模式为填充。但是您仍然可以使用 setDrawMode() 方法选择绘图模式来绘制 3D 形状,如下所示:

box.setDrawMode(DrawMode.FILL); 

示例

以下程序是一个示例,它演示了 3D 长方体上的 LINE 绘图模式。将此代码保存在名为BoxDrawModeLine.java的文件中。

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene;  
import javafx.scene.shape.Box; 
import javafx.scene.shape.DrawMode; 
import javafx.stage.Stage; 
         
public class BoxDrawModeLine extends Application { 
   @Override 
   public void start(Stage stage) { 
      //Drawing a Box 
      Box box1 = new Box(); 
      
      //Setting the properties of the Box 
      box1.setWidth(100.0); 
      box1.setHeight(100.0);   
      box1.setDepth(100.0); 
      
      //Setting the position of the box 
      box1.setTranslateX(200); 
      box1.setTranslateY(150); 
      box1.setTranslateZ(0);
      
      //Setting the drawing mode of the box 
      box1.setDrawMode(DrawMode.LINE);     
         
      //Creating a Group object   
      Group root = new Group(box1); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 300, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Drawing a Box"); 
         
      //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 BoxDrawModeLine.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls BoxDrawModeLine

输出

执行后,上述程序将生成一个 JavaFX 窗口,显示一个绘图模式为 LINE 的长方体,如下所示:

Drawing Modes

示例

让我们再来看另一个示例,该示例显示了在 3D 形状上使用 FILL 绘图模式的情况。为了正确显示这些模式的差异,我们将再次将此模式应用于 3D 长方体。将此代码保存在名为BoxDrawModeFill.java的文件中。

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.PerspectiveCamera; 
import javafx.scene.Scene;  
import javafx.scene.shape.Box; 
import javafx.scene.shape.DrawMode; 
import javafx.stage.Stage; 
         
public class BoxDrawModeFill extends Application { 
   @Override 
   public void start(Stage stage) { 
      //Drawing a Box 
      Box box1 = new Box(); 
      
      //Setting the properties of the Box 
      box1.setWidth(100.0); 
      box1.setHeight(100.0);   
      box1.setDepth(100.0); 
      
      //Setting the position of the box 
      box1.setTranslateX(200); 
      box1.setTranslateY(150); 
      box1.setTranslateZ(0);
      
      //Setting the drawing mode of the box 
      box1.setDrawMode(DrawMode.FILL); 
      
      //Creating a Group object   
      Group root = new Group(box1); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300); 
       
      //Setting camera 
      PerspectiveCamera camera = new PerspectiveCamera(false); 
      camera.setTranslateX(100); 
      camera.setTranslateY(50); 
      camera.setTranslateZ(0); 
      scene.setCamera(camera);  
      
      //Setting title to the Stage 
      stage.setTitle("Drawing a Box"); 
         
      //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 BoxDrawModeFill.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls BoxDrawModeFill

输出

执行后,上述程序将生成一个 JavaFX 窗口,显示一个绘图模式为 FILL 的长方体,如下所示:

Drawing Modes
广告