本文概述
在计算机图形学中, 渐变色(有时称为Color Progression)用于指定位置相关的颜色以填充特定区域。渐变颜色的值随位置而变化。渐变颜色通过随位置连续变化颜色值而在区域上产生平滑的颜色过渡。
JavaFX使我们能够实现两种类型的渐变颜色过渡:
- 线性渐变
- 径向渐变
线性渐变
要将线性渐变图案应用于形状, 我们需要实例化LinearGradient类。此类包含下表中描述的几种实例方法。
实例方法
类型 | 方法 | 描述 |
---|---|---|
Boolean | equals(Object o) | 比较两个对象 |
CycleMethod | getCycleMethod() | 定义已将哪种循环方法应用于LinearGradient。 |
Double | getEndX() | 倾斜轴终点的X坐标 |
Double | getEndY() | 倾斜轴终点的Y坐标 |
Double | getStartX() | 倾斜轴起点的X坐标 |
Double | getStartY() | 倾斜轴起点的Y坐标 |
List<Stop> | getStops() | 定义沿渐变的颜色分布方式 |
Int | hashCode() | 返回线性渐变对象的哈希码 |
Boolean | isOpaque() | 检查涂料是否完全不透明。 |
Boolean | isProprtional() | 检查起点和终点位置是否成比例。 |
String | toString() | 将Gradient对象转换为字符串。 |
建设者
此类的构造方法接受五个参数:
新的LinearGradient(startX, startY, endX, endY, Proportional, CycleMethod, stops)
(startX, startY):代表渐变颜色起点的x和y坐标。
(endX, endY):代表渐变颜色终点的x和y坐标。
比例:这是布尔类型的属性。如果为真, 则渐变颜色的起点和终点将成比例。
CycleMethod:定义应用于渐变的循环方法。
停止:定义沿渐变的颜色分布。
例:
package application;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class Shape_Example extends Application {
@Override
public void start(Stage primaryStage) {
VBox root = new VBox();
final Scene scene = new Scene(root, 300, 250);
Stop[] stops = new Stop[] { new Stop(0, Color.GREEN), new Stop(1, Color.BLUE)};
LinearGradient linear = new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops);
Rectangle rect = new Rectangle(0, 0, 100, 100);
rect.setFill(linear);
root.getChildren().add(rect);
primaryStage.setScene(scene);
primaryStage.setTitle("Animation Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
径向渐变
要将Radial渐变应用于形状, 我们需要实例化javafx.scene.paint.RadialGradient类。此类包含下表中描述的各种实例方法。
类型 | 方法 | 描述 |
---|---|---|
Boolean | equals(Object o) | 比较两个对象 |
Double | getCenterX() | 定义渐变的圆的X坐标 |
Double | getCenterY() | 定义渐变的圆的Y坐标 |
CycleMethod | getCycleMethod() | 定义已将哪种循环方法应用于LinearGradient。 |
Double | getFocusAngle() | 渐变中心与映射第一种颜色的位置的焦点之间的角度(以度为单位) |
Double | getFocusDistance() | 渐变中心与第一种颜色的焦点之间的距离。 |
Double | getRadius | 渐变半径 |
List<Stop> | getStops() | 定义沿渐变的颜色分布方式 |
Int | hashCode() | 返回线性渐变对象的哈希码 |
Boolean | isOpaque() | 检查涂料是否完全不透明。 |
Boolean | isProprtional() | 检查起点和终点位置是否成比例。 |
String | toString() | 将Gradient对象转换为字符串。 |
建设者
该类的构造函数接受一些参数。构造函数的语法如下。
public RadialGradient(double focusAngle, double focusDistance, double centerX, double centerY, double radius, boolean proportional, CycleMethod cycleMethod, Stops? stops)
例
package application;
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.scene.shape.Circle;
import javafx.stage.Stage;
public class RadialGradientClass extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(final Stage primaryStage) {
primaryStage.setTitle("Radial Gradient Example");
Group root = new Group();
Scene scene = new Scene(root, 400, 300, Color.WHITE);
primaryStage.setScene(scene);
addRectangle(scene);
primaryStage.show();
}
private void addRectangle(final Scene scene) {
Circle C = new Circle(200, 150, 100);
RadialGradient gradient1 = new RadialGradient(0, .1, 100, 100, 200, false, CycleMethod.NO_CYCLE, new Stop(0, Color.YELLOW), new Stop(1, Color.RED));
C.setFill(gradient1);
final Group root = (Group) scene.getRoot();
root.getChildren().add(C);
}
}
评论前必须登录!
注册