Javafx 简明教程
JavaFX - Stroke Miter Limit Property
JavaFX 允许用户使用多条线创建 2D 对象,而不是为存在的每个 2D 形状创建类。有几种形状不属于常规 2D 形状的类别。在这种情况下,可以通过对这些线应用 JavaFX 支持的几个属性,并在将它们组合在一起时将多条线连接起来,从而形成非传统的 2D 形状。其中一个属性是描边线连接属性。
描边线连接属性用于在组合多个线对象以形成另一个 2D 形状时设置连接的类型。此属性有三种类型,如下所示 −
-
Bevel − 在斜角连接中,相交的外部边缘用线段连接。
-
Miter − 在平切连接中,相交的外部边缘连接在一起形成一个锐边。
-
Round − 在圆弧连接中,相交的外部边缘通过舍入角进行连接,其半径恰好等于连接宽度的一半。
默认情况下,形状的描边线连接是平角。但是,该平角连接还有其他属性使连接更好。此属性称为描边斜接限制属性。
Stroke Miter Limit Property
此属性的类型为 double。它表示连接的内点和外点之间的距离限制。如果这两个点之间的距离超过给定的限制,平角会在边缘处被切断。
可以使用 setStroke() 方法将值设置为此属性,如下所示 −
path.setStrokeMiterLimit(4);
默认情况下,描边斜接限制值为 10 的描边为黑色。以下是具有不同描边限制的三角形的图表。
Example
让我们看一个示例,演示在三角形上使用描边线连接属性。将此文件保存为 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
Example
以下是一个示例,演示在多边形上使用 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