JavaFX - 线性渐变图案



除了纯色,您还可以在 JavaFX 中显示颜色渐变。在色彩科学中,颜色渐变定义为颜色根据其位置而变化的过渡。因此,颜色渐变也称为颜色渐变或颜色过渡。

传统上,颜色渐变包含按顺序或线性排列的颜色。但是,在线性渐变图案中,颜色沿单一方向流动。即使要着色的形状不是线性的,例如圆形或椭圆形,颜色仍然会沿一个方向排列。

让我们在本节中学习如何在二维形状上应用线性渐变图案。

应用线性渐变图案

要将线性渐变图案应用于节点,请实例化LinearGradient类并将它的对象传递给setFill(),setStroke()方法。

此类的构造函数接受五个参数,即:

  • startX, startY - 这些双精度属性表示渐变起点的 x 和 y 坐标。

  • endX, endY - 这些双精度属性表示渐变终点的 x 和 y 坐标。

  • cycleMethod - 此参数定义如何填充渐变边界(由起点和终点定义)之外的区域。

  • proportional - 这是一个布尔变量;将此属性设置为true时,起点和终点位置将设置为比例。

  • Stops - 此参数定义沿渐变线的颜色停止点。

//Setting the linear gradient 
Stop[] stops = new Stop[] { 
   new Stop(0, Color.DARKSLATEBLUE),  
   new Stop(1, Color.DARKRED)
};  
LinearGradient linearGradient = 
   new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops); 

示例 1

以下示例演示如何在 JavaFX 中将渐变图案应用于节点。在这里,我们正在创建一个圆形和文本节点,并向它们应用线性渐变图案。

将此代码保存在名为LinearGradientExample.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.LinearGradient; 
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 LinearGradientExample 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", 55)); 
      
      //Setting the position of the text 
      text.setX(140); 
      text.setY(50); 
       
      //Setting the linear gradient 
      Stop[] stops = new Stop[] { 
         new Stop(0, Color.DARKSLATEBLUE),  
         new Stop(1, Color.DARKRED)
      };  
      LinearGradient linearGradient = 
         new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops); 
       
      //Setting the linear gradient to the circle and text 
      circle.setFill(linearGradient); 
      text.setFill(linearGradient); 
         
      //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("Linear 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 LinearGradientExample.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls LinearGradientExample

输出

执行上述程序后,将生成如下 JavaFX 窗口:

Linear Gradient

示例 2

除了圆形之外,您还可以将这种类型的渐变应用于其他封闭形状,例如多边形。在这里,我们正在创建一个三角形并使用某种线性渐变图案为其着色。

将此代码保存在名为TriangleLinearGradient.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.LinearGradient; 
import javafx.scene.paint.Stop; 

import javafx.stage.Stage; 
import javafx.scene.shape.Polygon;
         
public class TriangleLinearGradient extends Application { 
   @Override 
   public void start(Stage stage) {            
      Polygon triangle = new Polygon(); 
	  
      triangle.getPoints().addAll(new Double[]{ 
         100.0, 50.0, 
         170.0, 150.0, 
         100.0, 250.0,  
      }); 
       
        
      Stop[] stops = new Stop[] { 
         new Stop(0, Color.ORANGE),  
         new Stop(1, Color.YELLOW)
      };  
      LinearGradient linearGradient = 
         new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops); 
       

      triangle.setFill(linearGradient);  
          
      Group root = new Group(triangle); 
          
      Scene scene = new Scene(root, 300, 300);  
      
      stage.setTitle("Linear 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 TriangleLinearGradient.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls TriangleLinearGradient

输出

执行上述程序后,将生成如下 JavaFX 窗口:

Triangle Linear Gradient
广告