Javafx 简明教程

JavaFX - Stroke Type Property

二维(2D)形状在几何学中通常被称为只有两个度量维度的结构,通常是长度和宽度,并且位于 XY 平面中。这些结构可以是开放的或闭合的图形。

Two dimensional(2D) shapes, in geometry, are usually referred to as structures that has only two dimensions of measure, commonly length and breadth, and lie on an XY plane. These structures can either be open or closed figures.

开放图形包括三次曲线、四边形曲线等,而封闭图形包括所有类型的多边形、圆形等。

Open figures include curves like Cubic curve, Quadrilateral curve, etc. whereas closed figures include all types of polygons, circles etc.

在 JavaFX 中,可以通过导入 javafx.scene.shape 包在应用程序中绘制这些 2D 形状。但是,为了提高形状的质量,可以在其上执行各种属性和操作。

In JavaFX, these 2D shapes can be drawn on an application by importing the javafx.scene.shape package. However, to improve the quality of a shape, there are various properties and operations that can be performed on it.

在本章中,我们将详细了解笔画类型属性。

In this chapter, we will learn about Stroke Type property in detail.

Stroke Type Property

2D 形状的笔画类型属性用于指定 2D 形状必须具有的边界线类型。在 JavaFX 中,此属性使用 StrokeType 类进行设置。你可以使用 setStrokeType() 方法设置笔划的类型,如下所示 −

The Stroke Type property of 2D shapes is used to specify the type of boundary line a 2D shape must have. In JavaFX, this property is set using the StrokeType class. You can set the type of the stroke using the method setStrokeType() as follows −

Path.setStrokeType(StrokeType.stroke_type);

形状的 Inside 可以为:

The stroke_type of a shape can be −

  1. Inside − The boundary line will be drawn inside the edge (outline) of the shape (StrokeType.INSIDE).

  2. Outside − The boundary line will be drawn outside the edge (outline) of the shape (StrokeType.OUTSIDE).

  3. Centered − The boundary line will be drawn in such a way that the edge (outline) of the shape passes exactly thorough the center of the line (StrokeType.CENTERED).

默认情况下,形状的 stroke 类型为居中。以下是具有不同 StrokeType 的三角形的图解:

By default, the stroke type of a shape is centered. Following is the diagram of a triangle with different Stroke Types −

stroke type

Example

让我们看一个示例,演示在 2D 形状上使用 StrokeType 属性。将此文件保存为 StrokeTypeEllipse.java

Let us see an example demonstrating the usage of StrokeType property on a 2D shape. Save this file with the name StrokeTypeExample.java.

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Polygon;
import javafx.scene.shape.StrokeType;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class StrokeTypeExample extends Application {
   @Override
   public void start(Stage stage) {
      //Creating a Triangle
      Polygon triangle = new Polygon();

      //Adding coordinates to the polygon
      triangle.getPoints().addAll(new Double[]{
         100.0, 50.0,
         170.0, 150.0,
         100.0, 250.0,
      });
      triangle.setFill(Color.BLUE);
      triangle.setStroke(Color.BLACK);
      triangle.setStrokeWidth(7.0);
      triangle.setStrokeType(StrokeType.CENTERED);

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

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

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

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

Output

在执行上述程序后,它会生成一个 JavaFX 窗口,其中显示了一个三角形,其 stroke 类型居中,如下所示。

On executing, the above program generates a JavaFX window displaying a triangle with centered stroke type as shown below.

stroke type output

Example

让我们看一个示例,演示在 2D 形状上使用 INSIDE StrokeType 属性。在这里,我们使用更大的宽度来正确显示 INSIDE 和 CENTERED stroke 的区别,比先前的示例。将此文件保存为 Point Light Source

Let us see an example demonstrating the usage of INSIDE StrokeType property on a 2D shape. We are using a larger width here in order to properly show the difference between INSIDE and CENTERED stroke types from previous example. Save this file with the name StrokeTypeEllipse.java.

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.StrokeType;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class StrokeTypeEllipse extends Application {
   @Override
   public void start(Stage stage) {
      //Drawing an ellipse
      Ellipse ellipse = new Ellipse();

      //Setting the properties of the ellipse
      ellipse.setCenterX(150.0f);
      ellipse.setCenterY(100.0f);
      ellipse.setRadiusX(100.0f);
      ellipse.setRadiusY(50.0f);

      ellipse.setFill(Color.ORANGE);
      ellipse.setStroke(Color.BLACK);
      ellipse.setStrokeWidth(20.0);
      ellipse.setStrokeType(StrokeType.INSIDE);

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

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

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

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

Output

在执行上述程序后,它会生成一个 JavaFX 窗口,其中显示了一个三角形,其 stroke 类型居中,如下所示。

On executing, the above program generates a JavaFX window displaying a triangle with centered stroke type as shown below.

stroketype inside