当前位置: 首页 > 文档资料 > JavaFX 中文教程 >

Blend

优质
小牛编辑
131浏览
2023-12-01

通常,混合物是指两种或更多种不同物质或物质的混合物。 如果我们应用混合效果,它将采用两个不同输入的像素。 这将在同一位置完成,并根据blend mode生成组合输出。

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

混合效果应用

javafx.scene.effect名为Blend的类表示混合效果,该类包含四个属性,它们是 -

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

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

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

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

例子 (Example)

以下是展示混合效果的示例。 在这里,我们绘制一个填充了BROWN颜色的圆圈,它上面是一个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窗口,如下所示。

混合效果示例

混合模式

S.NO模式和说明output
1

ADD

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

添加模式
2

MULTIPLY

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

多重模式
3

DIFFERENCE

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

差异模式
4

RED

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

红色模式
5

BLUE

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

蓝色模式
6

GREEN

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

绿色模式
7

EXCLUSION

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

排除模式
8

COLOR_BURN

在此模式中,底部输入颜色分量的倒数除以顶部输入颜色分量。 因此,反转并显示所获得的值。

颜色烧伤
9

COLOR_DODGE

在该模式中,底部输入颜色分量除以顶部输入颜色分量的倒数,因此反转并显示所获得的值。

COLOR DODGE
10

LIGHTEN

在此模式下,显示两个输入中较浅的颜色分量。

减轻
11

DARKEN

在此模式下,显示顶部和底部输入中较暗的颜色分量。

变暗
12

SCREEN

在此模式中,顶部和底部输入的颜色分量被反转,相乘,因此获得的值被反转并显示。

屏幕
13

OVERLAY

在此模式下,基于底部输入颜色,将两个输入值的颜色分量相乘或筛选,并显示结果。

覆盖
14

HARD_LIGHT

在此模式下,基于顶部输入颜色,将两个输入值的颜色分量相乘或筛选,并显示结果。

硬灯
15

SOFT_LIGH

在此模式下,基于顶部输入颜色,两个输入值的颜色分量被软化或减轻,并显示结果。

柔光
16

SRC_ATOP

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

SRC ATOP
17

SRC_OVER

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

SRC OVER