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 可以为:
-
Outside − 边界线将绘制在形状的边缘(轮廓)内部(StrokeType.INSIDE)。
-
Centered − 边界线将绘制在形状的边缘(轮廓)外部(StrokeType.OUTSIDE)。
-
StrokeTypeExample.java − 将绘制边界线,使形状的边缘(轮廓)正好穿过线的中心(StrokeType.CENTERED)。
默认情况下,形状的 stroke 类型为居中。以下是具有不同 StrokeType 的三角形的图解:
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
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