Javafx 简明教程
JavaFX - Drawing Modes Property
你可以使用 Shape3D 类在 JavaFX 应用程序中绘制 3D 形状。此类允许构建三种类型的 3D 形状:盒子、圆柱体、球体作为它的直接子类。
但是,根据你尝试创建的 JavaFX 应用程序的性质,你还可以使用 Shape3D 类提供的属性增强 3D 形状的外观。有三个这样的属性可以应用于 JavaFX 应用程序的 3D 形状。它们如下所示: -
-
Cull Face Property
-
Drawing Modes Property
-
Material Property
在本章中,我们将学习 JavaFX 中的绘制模式属性。
Drawing Modes Property
绘制模式是属于 DrawMode 枚举类型的属性,它表示用于绘制当前 3D 形状的绘制模式类型。在 JavaFX 中,可以选择两种绘制模式来绘制 3D 形状,它们是: -
-
Fill - 此模式绘制并填充 2D 形状(DrawMode.FILL)。
-
Line - 此模式使用线绘制 3D 形状(DrawMode.LINE)。
默认情况下,三维形状的绘制模式是填充。但你仍然可以使用 setDrawMode() 方法选择绘制模式来绘制 3D 形状,如下所示: -
box.setDrawMode(DrawMode.FILL);
Example
以下程序是一个展示 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 绘制模式的盒子,如下所示: -
Example
现在让我们看另一个示例,该示例展示了在 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 绘制模式的盒子,如下所示: -