JavaFX - 径向渐变图案



类似线性渐变图案,还有各种类型的渐变图案,它们描述了渐变的流动方式。其他类型包括径向、角形、反射和菱形渐变图案。在本章中,我们将学习径向渐变图案。

径向渐变图案是另一种类型的渐变图案,它从中心点开始,以圆形方式流动到半径处。简单来说,径向渐变包含以同心圆形式表示的两个或多个颜色停止点。

JavaFX 还提供这种类型的颜色图案来填充圆形类型的 2D 形状,例如正圆形或椭圆形等。

应用径向渐变图案

要将径向渐变图案应用于节点,请实例化 GradientPattern 类并将它的对象传递给 setFill()、setStroke() 方法。

此类的构造函数接受一些参数,其中一些参数是 -

  • startX, startY - 这些双精度属性表示渐变起点的 x 和 y 坐标。

  • endX, endY - 这些双精度属性表示渐变终点的 x 和 y 坐标。

  • cycleMethod - 此参数定义如何通过起点和终点定义颜色渐变边界外的区域,以及如何填充这些区域。

  • proportional - 这是一个布尔变量;将此属性设置为 true 时,将开始和结束位置设置为比例。

  • Stops - 此参数定义沿渐变线的颜色停止点。

//Setting the radial gradient 
Stop[] stops = new Stop[] { 
   new Stop(0.0, Color.WHITE),  
   new Stop(0.3, Color.RED), 
   new Stop(1.0, Color.DARKRED) 
};        

RadialGradient radialGradient = 
   new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops);

示例

以下示例演示了如何在 JavaFX 中将径向渐变图案应用于节点。在这里,我们创建了一个圆形和一个文本节点,并向它们应用渐变图案。

将此代码保存在名为 RadialGradientExample.java 的文件中。

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 

import javafx.scene.paint.Color; 
import javafx.scene.paint.CycleMethod; 
import javafx.scene.paint.RadialGradient;  
import javafx.scene.paint.Stop; 

import javafx.stage.Stage; 
import javafx.scene.shape.Circle; 
import javafx.scene.text.Font; 
import javafx.scene.text.Text;   

public class RadialGradientExample extends Application {  
   @Override 
   public void start(Stage stage) { 
      //Drawing a Circle 
      Circle circle = new Circle(); 
      
      //Setting the properties of the circle 
      circle.setCenterX(300.0f); 
      circle.setCenterY(180.0f); 
      circle.setRadius(90.0f);  
      
      //Drawing a text 
      Text text = new Text("This is a colored circle"); 
      
      //Setting the font of the text 
      text.setFont(Font.font("Edwardian Script ITC", 50)); 
      
      //Setting the position of the text 
      text.setX(155); 
      text.setY(50);  
      
      //Setting the radial gradient 
      Stop[] stops = new Stop[] { 
         new Stop(0.0, Color.WHITE),  
         new Stop(0.3, Color.RED), 
         new Stop(1.0, Color.DARKRED) 
      };        
      RadialGradient radialGradient = 
         new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops);  
      
      //Setting the radial gradient to the circle and text 
      circle.setFill(radialGradient); 
      text.setFill(radialGradient);  
      
      //Creating a Group object  
      Group root = new Group(circle, text);  
      
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300); 
      
      //Setting title to the Stage 
      stage.setTitle("Radial Gradient Example");  
      
      //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 RadialGradientExample.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls RadialGradientExample

输出

执行后,上述程序生成一个 JavaFX 窗口,如下所示 -

Radial Gradient

示例

径向渐变图案不适用于非圆形形状;也就是说,您只能在圆形和椭圆形形状上应用径向渐变。

在下面的示例中,让我们尝试将径向渐变图案应用于矩形形状。将此代码保存在名为 RectangleRadialGradient.java 的文件中。

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.paint.Color; 
import javafx.scene.paint.CycleMethod; 
import javafx.scene.paint.RadialGradient;  
import javafx.scene.paint.Stop; 
import javafx.stage.Stage; 
import javafx.scene.shape.Rectangle;  

public class RectangleRadialGradient extends Application {  
   @Override 
   public void start(Stage stage) { 
      Rectangle rct = new Rectangle(50.0f, 50.0f, 200.0f, 100.0f); 
 
      
      Stop[] stops = new Stop[] { 
         new Stop(0.0, Color.WHITE),  
         new Stop(0.3, Color.RED), 
         new Stop(1.0, Color.DARKRED) 
      };        
      RadialGradient radialGradient = 
         new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops);  
 
      rct.setFill(radialGradient);  
  
      Group root = new Group(rct);  
      Scene scene = new Scene(root, 300, 300); 
      stage.setTitle("Radial Gradient Example");   
      stage.setScene(scene);  
      stage.show(); 
   }
   public static void main(String args[]) { 
      launch(args); 
   } 
}

使用以下命令从命令提示符编译并执行保存的 java 文件。

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

输出

执行后,您将只看到形状中最外层的渐变颜色,如下所示 -

Rectangle Radial Gradient
广告