JavaFX - Stroke Miter Limit 属性



JavaFX 允许用户使用多条线创建 2D 对象,而不是为每个存在的 2D 形状创建类。有一些形状不属于传统 2D 形状的范畴。在这种情况下,您可以通过将多条线组合在一起,并在这些线组合时应用 JavaFX 支持的多个属性来形成非传统的 2D 形状。Stroke Line Join 属性就是其中之一。

Stroke Line Join 属性用于在将多个线对象组合成另一个 2D 形状时设置连接的类型。此属性有三种类型,如下所示:

  • 斜角 - 在斜角连接中,交点的外部边缘用线段连接。

  • 斜接 - 在斜接连接中,交点的外部边缘连接在一起形成一个锐角。

  • 圆角 - 在圆角连接中,交点的外部边缘通过圆角连接,该圆角的半径正好是连接宽度的二分之一。

默认情况下,形状的 Stroke Line Join 为斜接。但是,此斜接连接还具有其他属性以使连接更好。此属性称为 Stroke Miter Limit 属性。

Stroke Miter Limit 属性

此属性的类型为 double。它表示连接的内点和连接的外点之间距离的限制。如果这两个点之间的距离超过给定的限制,则斜接会在边缘处被截断。

您可以使用以下方法将值设置为此属性setStroke() 如下所示:

path.setStrokeMiterLimit(4);

默认情况下,描边斜接限制值为 10,描边的颜色为黑色。以下是具有不同描边限制的三角形的示意图。

Stroke Limit

示例

让我们看一个演示如何在三角形上使用 Stroke Line Join 属性的示例。将此文件保存为StrokeMiterLimitExample.java

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

public class StrokeMiterLimitExample 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.setStrokeMiterLimit(4.0);

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

输出

执行后,上述程序会生成一个 JavaFX 窗口,显示一个斜接限制为 4 的三角形,如下所示。

Stroke Miter Limit Output

示例

让我们看一个演示如何在多边形上使用 Stroke Miter Limit 属性的示例。在这里,我们将尝试传递一个比默认斜接限制相对较高的值。将此文件保存为StrokeMiterLimitPolygon.java

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

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

      //Adding coordinates to the polygon 
      polygon.getPoints().addAll(new Double[]{ 
         100.0, 50.0, 
         170.0, 50.0, 
         170.0, 150.0,
         100.0, 150.0,
         135.0, 200.0,		 
      });
      polygon.setFill(Color.ORANGE);
      polygon.setStroke(Color.BLACK);
      polygon.setStrokeWidth(5.0);
      polygon.setStrokeLineJoin(StrokeLineJoin.MITER);
      polygon.setStrokeMiterLimit(1000.0);

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

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

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

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

输出

执行后,上述程序会生成一个 JavaFX 窗口,显示一个斜接限制为 4 的三角形,如下所示。

Stroke Miter Limit Output
广告