JavaFX - 描边类型属性



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

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

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

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

描边类型属性

二维形状的描边类型属性用于指定二维形状必须具有的边界线的类型。在 JavaFX 中,此属性使用 StrokeType 类设置。您可以使用以下方法设置描边的类型:**setStrokeType()** −

Path.setStrokeType(StrokeType.stroke_type);

形状的描边类型可以是:

  • **内部 (Inside)** - 边界线将绘制在形状边缘(轮廓)内部 (StrokeType.INSIDE)。

  • **外部 (Outside)** - 边界线将绘制在形状边缘(轮廓)外部 (StrokeType.OUTSIDE)。

  • **居中 (Centered)** - 边界线将以这样的方式绘制:形状的边缘(轮廓)正好穿过线的中心 (StrokeType.CENTERED)。

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

Stroke Type

示例

让我们来看一个演示在二维形状上使用 StrokeType 属性的示例。将此文件保存为 **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 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTypeExample.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTypeExample

输出

执行后,上述程序将生成一个 JavaFX 窗口,其中显示一个具有居中描边类型的三角形,如下所示。

Stroke Type Output

示例

让我们来看一个演示在二维形状上使用 INSIDE StrokeType 属性的示例。为了正确显示 INSIDE 和 CENTERED 描边类型之间的区别,我们在此处使用了更大的宽度。将此文件保存为 **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 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTypeEllipse.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeTypeEllipse

输出

执行后,上述程序将生成一个 JavaFX 窗口,其中显示一个具有居中描边类型的三角形,如下所示。

Stroke Type Output
广告