Javafx 简明教程

JavaFX - Radial Gradient Pattern

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

Like Linear Gradient Pattern, there are various types of gradient patterns that depict the way they’re flowed. The other types are Radial, Angular, Reflected, Diamond gradient patterns. In this chapter, we will learn about the Radial Gradient Pattern.

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

The Radial Gradient Pattern is another type of gradient pattern that starts from a center point and flows in a circular manner up to a radius. Simply put, the radial gradient contains two or more color stops in the form of concentric circles.

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

JavaFX also provides this type of color pattern to fill circular type of 2D shapes, like a regular circle or an ellipse etc.

Applying Radial Gradient Pattern

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

To apply a Radial Gradient Pattern to the nodes, instantiate the GradientPattern class and pass its object to the setFill(), setStroke() methods.

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

The constructor of this class accepts a few parameters, some of which are −

  1. startX, startY − These double properties represent the x and y coordinates of the starting point of the gradient.

  2. endX, endY − These double properties represent the x and y coordinates of the ending point of the gradient.

  3. cycleMethod − This argument defines how the regions outside the color gradient bounds are defined by the starting and ending points and how they should be filled.

  4. proportional − This is a Boolean Variable; on setting this property to true the start and end locations are set to a proportion.

  5. Stops − This argument defines the color-stop points along the gradient line.

//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 中将径向渐变模式应用于节点。在此处,我们创建一个圆形和一个文本节点,并将渐变模式应用于它们。

Following is an example which demonstrates how to apply a radial gradient pattern to the nodes in JavaFX. Here, we are creating a circle and a text nodes and applying gradient pattern to them.

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

Save this code in a file with the name 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 文件。

Compile and execute the saved java file from the command prompt using the following commands.

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

执行后,以上程序将生成一个 JavaFX 窗口,如下所示 −

On executing, the above program generates a JavaFX window as follows −

radial gradient

Example

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

Radial Gradient Pattern does not work with shapes that are non-circular; i.e., you can only apply radial gradient on circular and elliptical shapes.

在以下示例中,我们尝试对一个矩形形状应用径向渐变模式。将此代码保存在文件 RectangleRadialGradient.java 中。

In the following example, let us try to apply the radial gradient pattern on a Rectangular shape. Save this code in a file with the name 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 文件。

Compile and execute the saved java file from the command prompt using the following commands.

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

在执行时,你只会看到形状中的渐变最外层颜色,如下所示 −

On executing, you will only see the outermost color of the gradient in the shape as follows −

rectangle radial gradient