Javafx 简明教程

JavaFX - Stroke Type Property

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

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

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

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

Stroke Type Property

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

Path.setStrokeType(StrokeType.stroke_type);

形状的 Inside 可以为:

  1. Outside − 边界线将绘制在形状的边缘(轮廓)内部(StrokeType.INSIDE)。

  2. Centered − 边界线将绘制在形状的边缘(轮廓)外部(StrokeType.OUTSIDE)。

  3. StrokeTypeExample.java − 将绘制边界线,使形状的边缘(轮廓)正好穿过线的中心(StrokeType.CENTERED)。

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

stroke type

Example

让我们看一个示例,演示在 2D 形状上使用 StrokeType 属性。将此文件保存为 StrokeTypeEllipse.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 文件。

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 类型居中,如下所示。

stroke type output

Example

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

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 文件。

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 类型居中,如下所示。

stroketype inside