Javafx 简明教程
JavaFX - Radial Gradient Pattern
与线性渐变模式类似,有各种类型的渐变模式来描述它们的流动方式。其他类型是径向、角度、反射、菱形渐变模式。在本章中,我们将了解径向渐变模式。
径向渐变模式是另一种渐变模式,它从中心点开始,沿圆形方式流到半径处。简单地说,径向渐变包含两个或更多同心圆形式的色标。
JavaFX 还提供此类颜色模式来填充圆形类型的 2D 形状,如常规圆形或椭圆形等。
Applying Radial Gradient Pattern
要将径向渐变模式应用于节点,请实例化 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);
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 窗口,如下所示 −
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
在执行时,你只会看到形状中的渐变最外层颜色,如下所示 −