Javafx 简明教程

JavaFX - Drawing an Arc

在简单几何中,圆弧被定义为椭圆或圆的圆周的一部分。或者,简单地说,它是一个连接两个端点的曲线。圆弧还圈住圆心的一个小于等于 360 度的角度。它由以下属性描述 −

  1. length − 沿圆弧的距离。

  2. angle − 曲线在圆心处构成的角度。

  3. radiusX − 当前圆弧所属的完整椭圆的宽度。

  4. radiusY − 当前圆弧所属的完整椭圆的高度。

如果 radiusX 和 radiusY 相同,那么圆弧就是圆周一部分。

arc

Arc in JavaFX

在 JavaFX 中,圆弧由名为 Arc 的类表示。此类属于 javafx.scene.shape 包。

通过实例化此类,您可以在 JavaFX 中创建圆弧节点。

此类有一些浮点数据类型属性,即 −

  1. centerX − 圆弧中心的 x 坐标。

  2. centerY − 圆弧中心的 y 坐标。

  3. radiusX − 当前圆弧所属的完整椭圆的宽度。

  4. radiusY − 当前圆弧所属的完整椭圆的高度。

  5. startAngle − 圆弧的起始角度(以度为单位)。

  6. length − 圆弧的角延伸量(以度为单位)。

为了绘制圆弧,您需要向这些属性传递值,可以通过在实例化时按照相同顺序将值传递给此类的构造函数或使用其各自的 setter 方法来传递。

Types of Arc

在 JavaFX 中,您可以绘制三种类型的圆弧,即 −

  1. Open - 未闭合的弧称为开弧。

  2. Chord - 和弦是一种由直线闭合的弧。

  3. Round - 圆弧是从椭圆的起始点和结束点连接到其圆心的弧。

open closed round arc

你可以使用 setType() 方法通过传递以下任意属性来设置弧类型 − ArcType.OPEN, ArcType.CHORD, ArcType.Round

Steps to Draw Arc

要在 JavaFX 中绘制弧,请遵循以下步骤。

Step 1: Creating an Arc

你可以通过实例化名为 Arc 的类来在 JavaFX 中创建弧,该类属于一个 javafx.scene.shape 包。你可以在 Application 类的 start() 方法中实例化此类,如下所示。

public class ClassName extends Application {
   public void start(Stage primaryStage) throws Exception {
      //Creating an object of the class Arc
      Arc arc = new Arc();
   }
}

Step 2: Setting Properties to the Arc

使用其各自的 setter 方法(如以下代码块中所示)指定此弧所属椭圆的中心 x、y 坐标(包括:radiusX、radiusY、起始角度和弧长)。

//Setting the properties of the arc
arc.setCenterX(300.0f);
arc.setCenterY(150.0f);
arc.setRadiusX(90.0f);
arc.setRadiusY(90.0f);
arc.setStartAngle(40.0f);
arc.setLength(239.0f);

Step 3: Setting the Type of the Arc

你也可以通过 setType() 方法设置弧类型(圆弧、和弦、开弧),如下面的代码块所示。

//Setting the type of the arc
arc.setType(ArcType.ROUND);

Step 4: Adding Arc Object to Group

start() 方法中,通过将上一步创建的弧对象作为其构造函数的参数值来实例化一个 Group 类 −

Group root = new Group(arc);

Step 5: Launching Application

创建二维对象后,请按照下面给出的步骤正确启动应用程序:

  1. 首先,通过将组对象作为其构造函数的参数值传递来实例化名为 Scene 的类。你也可以将应用程序屏幕的尺寸作为可选参数传递给此构造函数。

  2. 然后,使用 Stage 类的 setTitle() 方法设置阶段标题。

  3. 现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到阶段。

  4. 使用名为 show() 的方法显示场景的内容。

  5. 最后,借助 launch() 方法启动应用程序。

Example

以下是生成弧的程序。将此代码保存到名为 ArcExample.java 的文件中。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;

public class ArcExample extends Application {
   public void start(Stage stage) {
      //Drawing an arc
      Arc arc = new Arc();

      //Setting the properties of the arc
      arc.setCenterX(300.0f);
      arc.setCenterY(150.0f);
      arc.setRadiusX(90.0f);
      arc.setRadiusY(90.0f);
      arc.setStartAngle(40.0f);
      arc.setLength(239.0f);

      //Setting the type of the arc
      arc.setType(ArcType.ROUND);

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

      //Creating a scene object
      Scene scene = new Scene(root, 600, 300);

      //Setting title to the Stage
      stage.setTitle("Drawing an Arc");

      //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 ArcExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls ArcExample

运行后,上述程序会生成一个 JavaFX 窗口,其中显示一个弧,如下图所示。

drawing arc

Example

让我们尝试在以下示例中绘制另一个类型为“开弧”的弧。将此代码保存到名为 ArcOpen.java 的文件中。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;

public class ArcOpen extends Application {
   public void start(Stage stage) {
      //Drawing an arc
      Arc arc = new Arc();

      //Setting the properties of the arc
      arc.setCenterX(300.0f);
      arc.setCenterY(150.0f);
      arc.setRadiusX(90.0f);
      arc.setRadiusY(90.0f);
      arc.setStartAngle(40.0f);
      arc.setLength(239.0f);

      //Setting the type of the arc
      arc.setType(ArcType.OPEN);

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

      //Creating a scene object
      Scene scene = new Scene(root, 600, 300);

      //Setting title to the Stage
      stage.setTitle("Drawing an Open Arc");

      //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 ArcOpen.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls ArcOpen

运行后,上述程序会生成一个 JavaFX 窗口,其中显示一个弧,如下图所示。

drawing open arc

Example

现在,我们将尝试在以下示例中绘制另一个类型为“和弦”的弧。将此代码保存到名为 ArcChord.java 的文件中。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;

public class ArcChord extends Application {
   public void start(Stage stage) {
      //Drawing an arc
      Arc arc = new Arc();

      //Setting the properties of the arc
      arc.setCenterX(300.0f);
      arc.setCenterY(150.0f);
      arc.setRadiusX(90.0f);
      arc.setRadiusY(90.0f);
      arc.setStartAngle(40.0f);
      arc.setLength(239.0f);

      //Setting the type of the arc
      arc.setType(ArcType.CHORD);

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

      //Creating a scene object
      Scene scene = new Scene(root, 600, 300);

      //Setting title to the Stage
      stage.setTitle("Drawing a Chord Arc");

      //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 ArcChord.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls ArcChord

运行后,上述程序会生成一个 JavaFX 窗口,其中显示一个弧,如下图所示。

drawing chord arc