JavaFX 效果 - 混合

  • 简述

    通常,混合是指两种或多种不同事物或物质的混合物。如果我们应用混合效果,它将采用两个不同输入的像素。这将在同一位置完成,并根据blend mode.
    例如,如果我们绘制两个对象,顶部的对象会覆盖底部的对象。在应用混合效果时,重叠区域中两个对象的像素将根据输入模式进行组合和显示。
    应用混合效果
    类名为 Blend 包裹的 javafx.scene.effect 表示混合效果,这个类包含四个属性,它们是 -
    • bottomInput − 此属性属于 Effect 类型,它代表混合效果的底部输入。
    • topInput - 此属性属于效果类型,它代表混合效果的顶部输入。
    • opacity − 此属性为双精度型,表示使用顶部输入调制的不透明度值。
    • mode − 此属性属于 BlendMode 类型,它表示用于将两个输入混合在一起的模式。
  • 例子

    以下是演示混合效果的示例。在这里,我们正在绘制一个用 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 模式和描述 输出
    1
    ADD
    在这种模式下,顶部和底部输入的颜色值被添加和显示。
    添加模式
    2
    MULTIPLY
    在此模式下,顶部和底部输入的颜色值相乘并显示。
    乘法模式
    3
    DIFFERENCE
    在这种模式下,在顶部和底部输入的颜色值中,从较亮的颜色中减去较深的颜色并显示。
    差异模式
    4
    RED
    在这种模式下,底部输入的红色分量被顶部输入的红色分量替换。
    红色模式
    5
    BLUE
    在这种模式下,底部输入的蓝色分量被顶部输入的蓝色分量替换。
    蓝色模式
    6
    GREEN
    在这种模式下,底部输入的绿色分量被顶部输入的绿色分量替换。
    绿色模式
    7
    EXCLUSION
    在这种模式下,两个输入的颜色分量相乘和翻倍。然后从底部输入的颜色分量的总和中减去它们。然后显示结果。
    排除模式
    8
    COLOR_BURN
    在这种模式下,底部输入颜色分量的倒数除以顶部输入颜色分量。因此,获得的值被反转并显示。
    颜色燃烧
    9
    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