Javafx 简明教程
JavaFX - Drawing Modes Property
你可以使用 Shape3D 类在 JavaFX 应用程序中绘制 3D 形状。此类允许构建三种类型的 3D 形状:盒子、圆柱体、球体作为它的直接子类。
You can draw 3D shapes in a JavaFX application using the Shape3D class. This class allows you construct three types of 3D shapes: box, cylinder, sphere as its direct subclasses.
但是,根据你尝试创建的 JavaFX 应用程序的性质,你还可以使用 Shape3D 类提供的属性增强 3D 形状的外观。有三个这样的属性可以应用于 JavaFX 应用程序的 3D 形状。它们如下所示: -
However, according to the nature of a JavaFX application you are trying to create, you can also enhance the look of a 3D shape using the properties the Shape3D class provides. There are three such properties that can be applied on 3D shapes of a JavaFX application. They are listed as follows −
-
Cull Face Property
-
Drawing Modes Property
-
Material Property
在本章中,我们将学习 JavaFX 中的绘制模式属性。
In this chapter, we will be learning about the Drawing Modes Property in JavaFX.
Drawing Modes Property
绘制模式是属于 DrawMode 枚举类型的属性,它表示用于绘制当前 3D 形状的绘制模式类型。在 JavaFX 中,可以选择两种绘制模式来绘制 3D 形状,它们是: -
Drawing Modes is the property that belongs to the DrawMode enum type and it represents the type of drawing mode used to draw the current 3D shape. In JavaFX, you can choose two draw modes to draw a 3D shape, which are −
-
Fill − This mode draws and fills a 2D shape (DrawMode.FILL).
-
Line − This mode draws a 3D shape using lines (DrawMode.LINE).
默认情况下,三维形状的绘制模式是填充。但你仍然可以使用 setDrawMode() 方法选择绘制模式来绘制 3D 形状,如下所示: -
By default, the drawing mode of a 3Dimensional shape is fill. But you can still choose the draw mode to draw a 3D shape using the method setDrawMode() as follows −
box.setDrawMode(DrawMode.FILL);
Example
以下程序是一个展示 3D 盒子上 LINE 绘制模式的示例。将此代码保存在名为 BoxDrawModeLine.java 的文件中。
The following program is an example which demonstrates the LINE draw mode on a 3D box. Save this code in a file with the name 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 文件。
Compile and execute the saved java file from the command prompt using the following commands.
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 绘制模式的盒子,如下所示: -
On executing, the above program generates a JavaFX window displaying a box with draw mode LINE, as follows −

Example
现在让我们看另一个示例,该示例展示了在 3D 形状上使用 FILL 绘制模式。为了正确显示这些模式的差异,我们将再次在 3D 盒子上应用此模式。将此代码保存在名为 BoxDrawModeFill.java 的文件中。
Let us now see another example that shows the usage of FILL draw mode on a 3D shape. To show the difference of these modes properly, we will again apply this mode on a 3D box. Save this code in a file with the name 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 文件。
Compile and execute the saved java file from the command prompt using the following commands.
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 绘制模式的盒子,如下所示: -
On executing, the above program generates a JavaFX window displaying a box with draw mode FILL, as follows −
