网站开发android客户端,网站建设基础内容,html网页代码编辑器,婚恋网站需求分析在前面的章节中#xff0c;我们已经了解了如何在 JavaFX 应用程序中的 XY 平面上绘制 2D 形状。除了这些 2D 形状之外#xff0c;我们还可以使用 JavaFX 绘制其他几个 3D 形状。
通常#xff0c;3D 形状是可以在 XYZ 平面上绘制的几何图形。它们由两个或多个维度定义#…在前面的章节中我们已经了解了如何在 JavaFX 应用程序中的 XY 平面上绘制 2D 形状。除了这些 2D 形状之外我们还可以使用 JavaFX 绘制其他几个 3D 形状。
通常3D 形状是可以在 XYZ 平面上绘制的几何图形。它们由两个或多个维度定义通常是 length width and depth。JavaFX 支持的 3D 形状包括 Cylinder、Sphere 和 Box。
上面提到的每个 3D 形状都由一个类表示所有这些类都属于 javafx.scene.shape 包。名为 Shape3D 的类是 JavaFX 中所有 3 维形状的基类。
创建 3D 形状
要创建 3-Dimensional 形状需要 实例化相应的类
要创建一个 3-Dimensional 形状首先你需要实例化它各自的类。例如如果要创建一个 3D 框则需要实例化名为 Box 的类如下所示
Box box new Box();
设置形状的属性
实例化类后需要使用 setter 方法设置形状的属性。
例如要绘制 3D 框需要传递其 Width、Height、Depth。您可以使用各自的 setter 方法指定这些值如下所示
//Setting the properties of the Box
box.setWidth(200.0);
box.setHeight(400.0);
box.setDepth(200.0);
将 Shape 对象添加到组中
最后需要通过将形状的对象作为构造函数的参数传递来将其添加到组中如下所示。
//Creating a Group object
Group root new Group(box);
S.No 形状和描述 1 Box 长方体是具有length (depth), width, and a height. 长方体是具有 length depth 、 width 和 height 的三维形状。 在 JavaFX 中三维框由名为 Box 的类表示。此类属于 javafx.scene.shape 包。 通过实例化此类可以在 JavaFX 中创建一个 Box 节点。 此类具有 double 数据类型的 3 个属性 width − 框的宽度 height − 框的高度 depth - 框的深度 2 Cylinder 圆柱体是一种封闭的实体具有两个平行大部分为圆形的底面由曲面连接。 它由两个参数描述即其圆形底面的半径和圆柱体的高度。 在 JavaFX 中圆柱体由名为 Cylinder 的类表示。此类属于 javafx.scene.shape 包。 通过实例化此类您可以在 JavaFX 中创建一个圆柱体节点。此类具有 double 数据类型的 2 个属性 height − 圆柱体的高度 radius - 圆柱体的半径 3 Sphere 球体定义为与 3D 空间中的给定点的距离相同的点集 r。这个距离 r 是球体的半径给定的点是球体的中心。 在 JavaFX 中球体由名为 Sphere 的类表示。此类属于 javafx.scene.shape 包。 通过实例化此类可以在 JavaFX 中创建一个球体节点。 此类具有名为 radius 的 double 数据类型的属性。它表示 Sphere 的半径。
3D 对象的属性
对于所有 3 维对象可以在 JavaFX 中设置各种属性。它们在下面列出 JavaFX - 创建一个 Box
长方体是三维立体形状。长方体由 6 个矩形组成这些矩形以直角放置。使用方形面的长方体是立方体如果面是矩形而不是立方体则它看起来像一个鞋盒。
长方体是具有 length depth、width 和 height 的三维形状。在 JavaFX 中这种类型的三维形状被寻址为 Box;因为它可以是长方体或立方体具体取决于形状的测量值。
在 JavaFX 中三维框由名为 Box 的类表示。此类属于 javafx.scene.shape 包。通过实例化此类可以在 JavaFX 中创建一个 Box 节点。
绘制 3D 框的步骤
第 1 步创建 Box
可以通过实例化名为 BOX 的类在 JavaFX 中创建 Box该类属于包 javafx.scene.shape 。您可以在 Application 类的 start 方法中实例化此类如下所示
public class ClassName extends Application { Override public void start(Stage primaryStage) throws Exception {//Creating an object of the class Box Box box new Box(); }
}
第 2 步将属性设置为框
使用 3D 框各自的 setter 方法设置 3D 框的属性 Width、Height 和 Depth 如以下代码块所示
//Setting the properties of the Box
box.setWidth(200.0);
box.setHeight(400.0);
box.setDepth(200.0);
第 3 步创建 Group 对象
在 start 方法中通过实例化名为 Group 的类来创建 group 对象该类属于包 javafx.scene 。将上一步中创建的 Box节点对象作为参数传递给 Group 类的构造函数。为了将其添加到组中应执行此作如下所示
Group root new Group(box);
第 4 步启动应用程序 例1
下面是一个使用 JavaFX 生成 3D 框的程序。将此代码保存在名为 BoxExample.java 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Box;
import javafx.stage.Stage; public class BoxExample extends Application { Override public void start(Stage stage) { //Drawing a Box Box box new Box(); //Setting the properties of the Box box.setWidth(200.0); box.setHeight(400.0); box.setDepth(200.0); //Creating a Group object Group root new Group(box); //Creating a scene object Scene scene new Scene(root, 600, 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); }
}
例2
在前面的示例中我们没有指定要从中绘制框的开始和结束坐标。但是使用 animation 类的 translateX 和 translateY 属性我们可以在 JavaFX 应用程序上重新定位该框。让我们看一下下面的示例并将其保存在名为 TranslateBoxExample.java 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Box;
import javafx.scene.paint.Color;
import javafx.scene.transform.Translate;
import javafx.stage.Stage; public class TranslateBoxExample extends Application { Override public void start(Stage stage) { //Drawing a Box Box box new Box(); //Setting the properties of the Box box.setWidth(200.0); box.setHeight(200.0); box.setDepth(200.0);Translate translate new Translate(); translate.setX(200); translate.setY(150); translate.setZ(25); box.getTransforms().addAll(translate);//Creating a Group object Group root new Group(box); //Creating a scene object Scene scene new Scene(root, 400, 300);scene.setFill(Color.web(#81c483)); //Setting title to the Stage stage.setTitle(Translate 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); }
}
JavaFX - 创建圆柱体
圆柱体是一种封闭的实体具有两个平行大部分为圆形的底面由曲面连接。为了可视化您可以将 3D 圆柱体视为一堆杂乱的 2D 圆圈这些圆圈彼此堆叠到一定高度;因此即使它由两个参数描述也使其成为三维形状。
绘制 3D 圆柱体的步骤
第 1 步创建类
通过实例化名为 Cylinder 的类在 JavaFX 中创建一个 Cylinder 对象该类属于包 javafx.scene.shape 。您可以在 start 方法中实例化此类如下所示
public class ClassName extends Application { Override public void start(Stage primaryStage) throws Exception {//Creating an object of the Cylinder class Cylinder cylinder new Cylinder(); }
}
第 2 步为 Cylinder 设置属性
//Setting the properties of the Cylinder
cylinder.setHeight(300.0f);
cylinder.setRadius(100.0f); 第 3 步创建 Group 对象
Group root new Group(cylinder); 第 4 步启动应用程序
例1
下面的程序演示如何使用 JavaFX 生成 Cylinder。将此代码保存在名为 CylinderExample.java 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.CullFace;
import javafx.scene.shape.Cylinder;
import javafx.stage.Stage;public class CylinderExample extends Application { Override public void start(Stage stage) { //Drawing a Cylinder Cylinder cylinder new Cylinder(); //Setting the properties of the Cylinder cylinder.setHeight(300.0f); cylinder.setRadius(100.0f); //Creating a Group object Group root new Group(cylinder); //Creating a scene object Scene scene new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle(Drawing a cylinder); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); }
} 例2
还可以对 3D 形状应用转换。在此示例中我们尝试在 3D 圆柱体上应用平移转换并在应用程序上重新定位它。将此代码保存在名为 TranslateCylinderExample.java 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.CullFace;
import javafx.scene.shape.Cylinder;
import javafx.scene.paint.Color;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;public class TranslateCylinderExample extends Application { Override public void start(Stage stage) { //Drawing a Cylinder Cylinder cylinder new Cylinder(); //Setting the properties of the Cylinder cylinder.setHeight(150.0f); cylinder.setRadius(100.0f);Translate translate new Translate(); translate.setX(200); translate.setY(150); translate.setZ(25); cylinder.getTransforms().addAll(translate); //Creating a Group object Group root new Group(cylinder); //Creating a scene object Scene scene new Scene(root, 400, 300); scene.setFill(Color.web(#81c483));//Setting title to the Stage stage.setTitle(Drawing a cylinder); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); }
}
JavaFX - 创建球体
绘制 3D 球体的步骤
步骤 1创建球体
public class ClassName extends Application { Override public void start(Stage primaryStage) throws Exception {//Creating an object of the class Sphere Sphere sphere new Sphere(); }
}
第 2 步为球体设置属性
//Setting the radius of the Sphere
sphere.setRadius(300.0); 第 3 步创建 Group 对象
Group root new Group(sphere); 第 4 步启动应用程序
例1
以下程序演示如何使用 JavaFX 生成 Sphere。将此代码保存在名为 SphereExample.java 的文件中
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.Sphere; public class SphereExample extends Application { Override public void start(Stage stage) { //Drawing a Sphere Sphere sphere new Sphere(); //Setting the properties of the Sphere sphere.setRadius(50.0); sphere.setTranslateX(200); sphere.setTranslateY(150); //Creating a Group object Group root new Group(sphere); //Creating a scene object Scene scene new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle(Drawing a Sphere - draw fill);//Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); }
}
例2 在下面的程序中我们通过为 JavaFX 应用程序的场景着色来在 JavaFX 中应用一些 CSS。将此代码保存在名为 CSSSphereExample.java 的文件中
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.paint.Color;
import javafx.scene.shape.Sphere; public class CSSSphereExample extends Application { Override public void start(Stage stage) { //Drawing a Sphere Sphere sphere new Sphere(); //Setting the properties of the Sphere sphere.setRadius(50.0); sphere.setTranslateX(100); sphere.setTranslateY(150); //Creating a Group object Group root new Group(sphere); //Creating a scene object Scene scene new Scene(root, 300, 300);scene.setFill(Color.ORANGE); //Setting title to the Stage stage.setTitle(Drawing a Sphere);//Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); } public static void main(String args[]){ launch(args); }
}