JavaFX 效果 - 混合

一般来说,混合是指两种或多种不同事物或物质的混合。如果我们应用混合效果,它将获取两个不同输入的像素。这将在同一位置完成,并根据混合模式产生组合输出。

例如,如果我们绘制两个对象,顶部对象覆盖底部对象。在应用混合效果时,重叠区域中两个对象的像素将根据输入模式进行组合和显示。

已应用混合效果

javafx.scene.effect中名为Blend的类表示混合效果,此类包含四个属性,即 −

  • bottomInput −此属性属于 Effect 类型,表示混合效果的底部输入。

  • topInput − 此属性属于 Effect 类型,表示混合效果的顶部输入。

  • opacity − 此属性属于 double 类型,表示使用顶部输入调制的不透明度值。

  • mode − 此属性属于 BlendMode 类型,表示用于将两个输入混合在一起的模式。

示例

以下是演示混合效果的示例。在这里,我们绘制了一个用棕色填充的圆圈,圆圈上方是一个蓝色颜色输入。

我们已应用混合效果,选择重叠区域中的乘法模式,两个对象的颜色相乘并显示。

将此代码保存在名为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) {
    //绘制一个圆
    Circle circle = new Circle();
    
    //设置圆的中心
    circle.setCenterX(75.0f);
    circle.setCenterY(75.0f);
    
    //设置圆的半径
    circle.setRadius(30.0f);
    
    //设置圆的填充颜色
    circle.setFill(Color.BROWN);
    
    //实例化混合类
    Blend blend = new Blend();
    
    //准备输入对象
    ColorInput topInput = new ColorInput(35, 30, 75, 40, Color.BLUEVIOLET);
    
    //设置混合对象的顶部输入
    blend.setTopInput(topInput);
    
    //设置混合模式
    blend.setMode(BlendMode.SRC_OVER);
    
    //将混合效果应用于圆圈
    circle.setEffect(blend);
    
    //创建 Group 对象
    Group root = new Group(circle);
    
    //创建 Scene 对象
    Scene scene = new Scene(root, 150, 150);
    
    //设置舞台(Stage)标题
    stage.setTitle("Blend Example");
    
    //将场景添加到舞台(Stage)
    stage.setScene(scene);
    
    //显示舞台(Stage)内容
    stage.show();
    }    
   public static void main(String args[]){ 
      launch(args); 
   } 
}   

使用以下命令从命令提示符编译并执行保存的 java 文件。

javac BlendEffectExample.java 
java BlendEffectExample

执行时,上述程序将生成一个 JavaFX 窗口,如下所示。

混合效果示例

混合模式

S.NO 模式 &描述 输出
1

ADD

在此模式下,顶部和底部输入的颜色值将相加并显示。

添加模式
2

MULTIPLY

在此模式下,顶部和底部输入的颜色值将相乘并显示。

MULTIPLY 模式
3

DIFFERENCE

在此模式下,在顶部和底部输入的颜色值中,较暗的一个从较亮的一个中减去并显示。

DIFFERENCE 模式
4

RED

在此模式下,底部输入的红色成分被顶部输入的红色成分替换。

RED 模式
5

BLUE

在此模式下,底部输入的蓝色组件被顶部输入的蓝色组件替换。

蓝色模式
6

GREEN

在此模式下,底部输入的绿色组件被顶部输入的绿色组件替换。

绿色模式
7

EXCLUSION

在此模式下,将两个输入的颜色分量相乘并加倍。然后将它们从底部输入的颜色分量之和中减去。然后显示结果。

EXCLUSION 模式
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

在此模式下,基于顶部输入颜色,将两个输入值的颜色分量柔化或变亮,并显示结果。

柔光
16

SRC_ATOP

在此模式下,重叠区域用底部输入的颜色分量填充。而非重叠区域则用顶部输入的颜色分量填充。

SRC ATOP
17

SRC_OVER

在此模式下,顶部输入绘制在底部输入上方。

SRC OVER

javafx_effects.html