如何在JavaFX中将径向渐变(颜色)应用于节点?
此方法接受javafx.scene.paint.Paint类的对象作为参数。它是颜色和渐变的基类,用于用颜色填充形状和背景。
JavaFX中的javafx.scene.paint.RadialGradient类是Paint的子类,使用它可以用圆形颜色渐变图案填充形状。
现场演示
->
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.shape.Ellipse; import javafx.scene.shape.Polygon; import javafx.scene.shape.Rectangle; public class RadialGradientExample extends Application { public void start(Stage stage) { //画一个圆 Circle circle = new Circle(75.0f, 65.0f, 40.0f ); //画一个矩形 Rectangle rect = new Rectangle(150, 30, 100, 65); //画一个椭圆 Ellipse ellipse = new Ellipse(330, 60, 60, 35); //绘制多边形 Polygon poly = new Polygon(410, 60, 430, 30, 470, 30, 490, 60, 470, 100, 430, 100 ); //设置径向渐变 Stop[] stops = new Stop[] { new Stop(0.0, Color.WHITE), new Stop(0.3, Color.RED), new Stop(1.0, Color.DARKRED) }; RadialGradient gradient = new RadialGradient(0, 0, 300, 178, 60, false, CycleMethod.NO_CYCLE, stops); //设置图案 circle.setFill(gradient); circle.setStrokeWidth(3); circle.setStroke(Color.CADETBLUE); rect.setFill(gradient); rect.setStrokeWidth(3); rect.setStroke(Color.CADETBLUE); ellipse.setFill(gradient); ellipse.setStrokeWidth(3); ellipse.setStroke(Color.CADETBLUE); poly.setFill(gradient); poly.setStrokeWidth(3); poly.setStroke(Color.CADETBLUE); //设置舞台 Group root = new Group(circle, ellipse, rect, poly); Scene scene = new Scene(root, 600, 150); stage.setTitle("Radial Gradient"); stage.setScene(scene); stage.show(); } public static void main(String args[]){ launch(args); } }
输出结果