JavaFX - 混合效果



一般來說,混合是指兩種或多種不同事物或物質的混合。如果我們應用混合效果,它將獲取兩個不同輸入的畫素。這將在相同的位置執行,並根據混合模式生成組合輸出。

例如,如果我們繪製兩個物件,則頂部物件覆蓋底部物件。在應用混合效果時,重疊區域中兩個物件的畫素將被組合並根據輸入模式顯示。

Blend effect Applied

名為Blend的類(位於javafx.scene.effect包中)表示混合效果,此類包含四個屬性,它們是:

  • bottomInput - 此屬性的型別為 Effect,它表示混合效果的底部輸入。

  • topInput - 此屬性的型別為 Effect,它表示混合效果的頂部輸入。

  • opacity - 此屬性為 double 型別,它表示與頂部輸入調製的透明度值。

  • mode - 此屬性的型別為 BlendMode,它表示用於將兩個輸入混合在一起的模式。

示例

以下示例演示了混合效果。在這裡,我們在棕色填充的圓圈之上繪製了一個藍色紫色 ColorInput。

我們應用了混合效果並選擇了“multiply”模式。在重疊區域,兩個物件的顏色相乘並顯示。

將此程式碼儲存在名為BlendEffectExample.java的檔案中。

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage;
import javafx.scene.shape.Circle; 
import javafx.scene.effect.Blend; 
import javafx.scene.effect.BlendMode; 
import javafx.scene.effect.ColorInput; 
import javafx.scene.paint.Color; 
         
public class BlendEffectExample extends Application { 
   @Override 
   public void start(Stage stage) { 
      //Drawing a Circle 
      Circle circle = new Circle();       
      
      //Setting the center of the Circle
      circle.setCenterX(75.0f); 
      circle.setCenterY(75.0f); 
      
      //Setting radius of the circle 
      circle.setRadius(30.0f); 
      
      //Setting the fill color of the circle 
      circle.setFill(Color.BROWN); 
       
      //Instantiating the blend class 
      Blend blend = new Blend(); 
      
      //Preparing the to input object 
      ColorInput topInput = new ColorInput(35, 30, 75, 40, Color.BLUEVIOLET); 
      
      //setting the top input to the blend object 
      blend.setTopInput(topInput); 
      
      //setting the blend mode 
      blend.setMode(BlendMode.SRC_OVER); 
       
      //Applying the blend effect to circle  
      circle.setEffect(blend);       
         
      //Creating a Group object  
      Group root = new Group(circle); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 150, 150);  
      
      //Setting title to the Stage 
      stage.setTitle("Blend 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 BlendEffectExample.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls BlendEffectExample

輸出

執行上述程式後,將生成如下所示的 JavaFX 視窗。

Blend Effect Example

混合模式

序號 模式和描述 輸出
1

ADD

在此模式下,頂部和底部輸入的顏色值相加並顯示。

Add Mode
2

MULTIPLY

在此模式下,頂部和底部輸入的顏色值相乘並顯示。

MULTIPLY Mode
3

DIFFERENCE

在此模式下,在頂部和底部輸入的顏色值中,較暗的顏色值從較亮的顏色值中減去並顯示。

DIFFERENCE Mode
4

RED

在此模式下,底部輸入的紅色分量將被頂部輸入的紅色分量替換。

RED Mode
5

BLUE

在此模式下,底部輸入的藍色分量將被頂部輸入的藍色分量替換。

BLUE Mode
6

GREEN

在此模式下,底部輸入的綠色分量將被頂部輸入的綠色分量替換。

GREEN MODE
7

EXCLUSION

在此模式下,兩個輸入的顏色分量相乘並加倍。然後,它們從底部輸入的顏色分量之和中減去。然後顯示結果。

EXCLUSION Mode
8

COLOR_BURN

在此模式下,底部輸入顏色分量的倒數除以頂部輸入顏色分量。因此,將獲得的值反轉並顯示。

COLOR BURN
9

COLOR_DODGE

在此模式下,底部輸入顏色分量除以頂部輸入顏色分量的倒數,然後將獲得的值反轉並顯示。

COLOR DODGE
10

LIGHTEN

在此模式下,顯示兩個輸入中較亮的顏色分量。

Lighten
11

DARKEN

在此模式下,顯示頂部和底部輸入中較暗的顏色分量。

Darken
12

SCREEN

在此模式下,頂部和底部輸入的顏色分量反轉並相乘,然後將獲得的值反轉並顯示。

Screen
13

OVERLAY

在此模式下,根據底部輸入顏色,將兩個輸入值的顏色分量相乘或篩選,然後顯示結果。

Overlay
14

HARD_LIGHT

在此模式下,根據頂部輸入顏色,將兩個輸入值的顏色分量相乘或篩選,然後顯示結果。

Hard Light
15

SOFT_LIGH

在此模式下,根據頂部輸入顏色,將兩個輸入值的顏色分量軟化或變亮,然後顯示結果。

Soft Light
16

SRC_ATOP

在此模式下,重疊區域填充底部輸入的顏色分量。而非重疊區域填充頂部輸入的顏色分量。

SRC ATOP
17

SRC_OVER

在此模式下,頂部輸入繪製在底部輸入之上。

SRC OVER
廣告