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 在此模式下,顶部和底部输入的颜色值将相乘并显示。 |
|
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 在此模式下,重叠区域用底部输入的颜色分量填充。而非重叠区域则用顶部输入的颜色分量填充。 |
|
17 |
SRC_OVER 在此模式下,顶部输入绘制在底部输入上方。 |