Javafx 简明教程

JavaFX - 2D Shapes

在上一章中,我们看到了 JavaFX 的基本应用,其中我们学会了如何创建一个空窗口以及如何在 JavaFX 的 XY 平面上绘制线。除了线以外,我们还可以绘制其他一些 2D 形状。

2D Shape

通常,2D 形状是可以绘制在 XY 平面上的几何图形,包括线、矩形、圆等。

使用 JavaFX 库,你可以绘制:

  1. 预定义的形状,如线、矩形、圆、椭圆、多边形、折线、三次曲线、二次曲线、弧形。

  2. 路径元素,如移动路径元素、线、水平线、垂直线、三次曲线、二次曲线、弧形。

  3. 除此之外,你还可以通过解析 SVG 路径绘制 2D 形状。

每个上述 2D 形状均用一个类表示,所有这些类都属于包 javafx.scene.shape 。名为 Shape 的类是 JavaFX 中所有二维形状的基类。

Creating a 2D Shape in JavaFX

要创建图表,你需要:

  1. 实例化所需形状的相应类。

  2. 设置形状的属性。

  3. 将形状对象添加到组。

Instantiating the Respective Class

要创建 2 维度形状,首先你需要实例化其各自的类。例如,如果你要创建一个圆,你需要按如下方式实例化名为 Circle 的类:

Circle circle = new Circle();

Setting the Properties of the Shape

在实例化类之后,你需要使用 setter 方法为形状设置属性。例如,你可以使用以下 setter 方法设置 Circle 类中心的 X 和 Y 坐标及半径:

// Setting the Properties of a circle
circle.setCenterX(300.0f);
circle.setCenterY(135.0f);
circle.setRadius(100.0f);

Adding the Shape Object to the Group

最后,你需要将圆对象添加到组,如下所示将其传递为构造函数的参数。

//Creating a Group object
Group root = new Group(circle);

Various 2D Shapes available in JavaFX

下表列出了 JavaFX 提供的各种形状(类)。

S.No

Shape & Description

1

Line 线是连接两个点的几何结构。包 javafx.scene.shapeLine 类在 XY 平面中表示一条线。

2

Rectangle 通常来说,矩形是一个四边形,它有两对平行且重合的边,所有内角都是直角。在 JavaFX 中,一个矩形由名为 Rectangle 的类表示。此类属于包 javafx.scene.shape

3

Rounded Rectangle 在 JavaFX 中,你可以绘制带锐角或带弧角的矩形,带弧角的矩形被称为圆角矩形。

4

Circle 圆是一条形成闭合环路的线,该环路上的每一点与中心点之间的距离都是固定的。在 JavaFX 中,一个圆由名为 Circle 的类表示。此类属于包 javafx.scene.shape

5

Ellipse 椭圆形由两个点定义,每个点都称为焦点。如果取椭圆上的任意一点,则到这两个焦点的距离之和是恒定的。这个椭圆的大小就是由这两个距离的总和来决定的。在 JavaFX 中,一个椭圆形由名为 Ellipse 的类表示。此类属于包 javafx.scene.shape

6

Polygon 由许多共面线段首尾相连而形成的闭合形状。在 JavaFX 中,一个多边形由名为 Polygon 的类表示。此类属于包 javafx.scene.shape

7

Polyline 折线与多边形相同,除了末尾的折线不是闭合的。或者说,连续线由一条或多条线段组成。在 JavaFX 中,一个折线由名为 Polygon 的类表示。此类属于包 javafx.scene.shape

8

Cubic Curve 三次曲线是在 XY 平面上的贝塞尔参数曲线,是 3 次曲线。在 JavaFX 中,一个三次曲线由名为 CubicCurve 的类表示。此类属于包 javafx.scene.shape

9

QuadCurve 二次曲线是在 XY 平面上的贝塞尔参数曲线,是 2 次曲线。在 JavaFX 中,一个二次曲线由名为 QuadCurve 的类表示。此类属于包 javafx.scene.shape

10

Arc 圆弧是曲线的一部分。在 JavaFX 中,一个圆弧由名为 Arc 的类表示。此类属于包 javafx.scene.shapeTypes Of Arc 除此之外,我们可以绘制 3 种类型的圆弧 Open, Chord, Round

11

SVGPath 在 JavaFX 中,我们可以通过解析 SVG 路径来构造图像。此类形状由名为 SVGPath 的类表示。此类属于包 javafx.scene.shape 。此类有一个名为 content 的 String 数据类型属性。此属性表示要从中绘制图像的 SVG 路径编码字符串。

Properties of 2D Objects

对于所有 2 维度对象,你可以设置各种属性,如填充、描边、描边类型等。下一节将讨论 2D 对象的各种属性。

我们将在本教程的后面对这些属性进行详细了解。

Operations on 2D Objects

如果我们向一个组中添加多个形状,第一个形状就会被第二个形状重叠,如下所示。

operations on 2d objects

除了转换(旋转、缩放、平移等)、过渡(动画),你还可以对 2D 对象执行三种操作:即 - Union, SubtractionIntersection

  1. Union Operation: 此操作将两个或更多形状作为输入,并返回它们占据的区域。

  2. Intersection Operation: 此操作将两个或更多形状作为输入,并返回它们之间的交集区域。

  3. Subtraction Operation: 此操作将两个或更多形状作为输入。然后,它返回第一个形状的区域,但不包括被第二个形状重叠的区域。