JavaFX 效果 - 混合



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

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

Blend effect Applied

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

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

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

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

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

示例

以下是一個演示混合效果的示例。在這裡,我們在上面繪製了一個填充有棕色顏色的圓形,上面有一個 BLUEVIOLET ColorInput。

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

將此程式碼儲存在名為**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 BlendEffectExample.java 
java 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_LIGHT

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

Soft Light
16

SRC_ATOP

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

SRC ATOP
17

SRC_OVER

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

SRC OVER
javafx_effects.htm
廣告

© . All rights reserved.