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 在此模式下,顶部输入绘制在底部输入上方。 |
![]() |


















javafx_effects.html