Javafx 简明教程

JavaFX - Radial Gradient Pattern

与线性渐变模式类似,有各种类型的渐变模式来描述它们的流动方式。其他类型是径向、角度、反射、菱形渐变模式。在本章中,我们将了解径向渐变模式。

径向渐变模式是另一种渐变模式,它从中心点开始,沿圆形方式流到半径处。简单地说,径向渐变包含两个或更多同心圆形式的色标。

JavaFX 还提供此类颜色模式来填充圆形类型的 2D 形状,如常规圆形或椭圆形等。

Applying Radial Gradient Pattern

要将径向渐变模式应用于节点,请实例化 GradientPattern 类并将其对象传递给 setFill(), setStroke() 方法。

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

  1. startX, startY - 这些双重属性表示渐变的起始点的 x 和 y 坐标。

  2. endX, endY - 这些双重属性表示渐变的结束点的 x 和 y 坐标。

  3. cycleMethod - 此参数定义颜色渐变边界之外的区域如何通过开始点和结束点定义,以及如何填充它们。

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

  5. 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);

Example

以下是一个示例,演示如何在 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

Example

径向渐变模式无法用于非圆形的形状;也就是说,你只能在圆形和椭圆形中使用径向渐变。

在以下示例中,我们尝试对一个矩形形状应用径向渐变模式。将此代码保存在文件 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