JavaFX - 描边填充属性



JavaFX 应用程序支持显示各种内容,例如文本、二维形状、三维形状等;每个对象都有默认设置,以便创建基本的应用程序。因此,在 JavaFX 应用程序上绘制二维形状时,每个形状也有一些默认设置,可以在单独设置时修改它们。例如,二维形状的默认填充颜色始终为黑色。

引入了各种属性来提高这些形状的质量;在之前的章节中,我们已经学习了如何更改形状边界的尺寸和位置。在本章中,我们将学习如何将特定二维形状的默认黑色更改为其他颜色。

描边填充属性

JavaFX 二维形状中的描边填充属性用于指定形状要填充的颜色。此属性属于 javafx.scene.paint 包。您可以使用 setFill() 方法设置形状的填充颜色,如下所示:

path.setFill(COLOR.BLUE);

默认情况下,描边颜色的值为黑色。下图是一个具有不同颜色的三角形。

Stroke Fill

示例

在这个示例中,我们将尝试创建两个二维圆形,并用黄色填充其中一个圆形,另一个圆形保持其默认颜色。目的是观察两种形状之间的区别。将此文件保存为StrokeFillExample.java

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.shape.Circle;
import javafx.scene.shape.Shape;
import javafx.scene.paint.Color;
import javafx.stage.Stage;  

public class StrokeFillExample extends Application { 
   @Override 
   public void start(Stage stage) {        
      //Creating a Circle 
      Circle circle1 = new Circle(200.0f, 150.0f, 50.0f); 
      Circle circle2 = new Circle(100.0f, 150.0f, 50.0f);

      circle1.setFill(Color.YELLOW);

      //Creating a Group object  
      Group root = new Group();
      root.getChildren().addAll(circle1, circle2);

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

      //Setting title to the Stage 
      stage.setTitle("Colouring a Circle"); 

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

输出

执行上述程序后,会生成一个 JavaFX 窗口,显示两个圆形,左侧圆形具有其默认填充,而另一个圆形为黄色,如下所示。

Stroke Fill Output

示例

我们在前面的示例中创建了两个简单的二维形状,但您也可以将填充颜色设置为使用路径元素创建的复杂形状。

在这个示例中,我们尝试填充使用 SVG 路径的线条命令创建的复杂形状。将此文件保存为StrokeFillSVGPath.java

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.SVGPath; 
import javafx.stage.Stage; 
        
public class StrokeFillSVGPath extends Application {  
   @Override 
   public void start(Stage stage) { 
      //Creating a SVGPath object 
      SVGPath svgPath = new SVGPath();       
       
      String path = "M 100 100 H 190 V 190 H 150 L 200 200";
      
      //Setting the SVGPath in the form of string 
      svgPath.setContent(path);

      // Setting the stroke and fill of the path
      svgPath.setStroke(Color.BLACK);
      svgPath.setFill(Color.BLUE);	  
         
      //Creating a Group object  
      Group root = new Group(svgPath); 
               
      //Creating a scene object 
      Scene scene = new Scene(root, 300, 300);
      
      //Setting title to the Stage
      stage.setTitle("Drawing a Line"); 
         
      //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 StrokeFillSVGPath.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls StrokeFillSVGPath

输出

执行上述程序后,会生成一个 JavaFX 窗口,显示两个圆形,左侧圆形具有其默认填充,而另一个圆形为黄色,如下所示。

Stroke Fill SVG Path
广告