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.