JavaFX - 效果

效果是任何增强图形外观的操作。在 JavaFX 中,效果是一种应用于节点以增强其外观的算法。Node 类的效果属性用于指定效果。

在 JavaFX 中,您可以为节点设置各种效果,例如 bloom、blurglow。每种效果都由一个类表示,所有这些类都可以在名为 javafx.scene.effect 的包中找到。

将效果应用于节点

您可以使用 setEffect() 方法将效果应用于节点。对于此方法,您需要传递效果的对象。

要将效果应用于节点,您需要 −

  • 创建节点。

  • 实例化需要应用的效果的相应类。

  • 设置效果的属性。

  • 使用 setEffect() 方法将效果应用于节点。

创建节点

首先,通过实例化各自的类在 JavaFX 应用程序中创建节点。

例如,如果您想将发光效果应用于应用程序中的图像。首先,您需要通过实例化 Image 类来创建一个图像节点,并设置其视图,如下所示。

//创建图像
Image image = new Image("https://www.tutorialspoint.com/green/images/logo.png");

//设置图像视图
ImageView imageView = new ImageView(image);

//设置图像的位置
imageView.setX(100);
imageView.setY(70);

//设置图像视图的适合高度和宽度
imageView.setFitHeight(200);
imageView.setFitWidth(400);

//设置图像视图的保留比例
imageView.setPreserveRatio(true);

实例化相应的类

实例化表示需要应用于所创建节点的效果的类。

例如 − 要应用发光效果,您需要实例化 Glow 类,如以下代码框所示 −

Glow glow = new Glow();

设置效果的属性

实例化类后,您需要使用其 setter 方法设置效果的属性。

例如 − 要绘制 3 维框,您需要传递其宽度、高度和深度。您可以使用它们各自的 setter 方法指定这些值,如下所示 −

//设置级别属性
glow.setLevel(0.9);

向节点添加效果

最后,您可以使用 setEffect() 方法将所需的效果应用于节点。例如:要将发光效果设置为图像节点,您需要将 Glow 类的对象传递给此方法,如下所示 −

imageView.setEffect(glow);

JavaFX 效果 − 下表列出了 JavaFX 提供的各种效果(类)。这些类存在于名为 javafx.scene.effect 的包中。

S.No 形状和描述
1 颜色调整

您可以通过将颜色调整效果应用于图像来调整图像的颜色。这包括调整每个像素的色调、饱和度、亮度对比度

javafx.scene.effect中名为ColorAdjust的类表示颜色调整效果。

2 颜色输入

颜色输入效果提供的输出与绘制矩形并用颜色填充它相同。与其他效果不同,如果将此效果应用于任何节点,它只会显示一个矩形框(而不是节点)。此效果主要用于作为其他效果的输入。

javafx.scene.effect中名为ColorInput的类表示颜色输入效果。

3 图像输入

JavaFX 中的图像输入效果只是将图像嵌入到 JavaFX 屏幕。

与颜色输入效果(用于将指定的彩色矩形区域作为输入传递给其他效果)一样,图像输入效果用于将指定的图像作为输入传递给另一个效果。

javafx.scene.effect中名为ImageInput的类表示图像输入效果。

4 混合

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

javafx.scene.effect中名为Blend的类表示混合效果。

5 绽放

应用绽放效果时,节点某些部分的像素会发光。

javafx.scene.effect中名为Bloom的类表示绽放效果。

6 发光

与绽放一样,发光效果使给定的输入图像发光,此效果使输入的明亮像素更亮。

javafx.scene.effect中名为Glow的类表示发光效果。

7 方框模糊

将此模糊效果应用于节点时,会变得不清晰。方框模糊是 JavaFX 提供的一种模糊效果。在此效果中,当我们将模糊应用于节点时,会使用一个简单的盒子过滤器。

javafx.scene.effect 中名为 BoxBlur 的类表示盒子模糊效果。

8 高斯模糊

就像盒子模糊一样,高斯是一种在 JavaFX 中模糊节点的效果。高斯模糊效果 中唯一的区别是使用高斯卷积核来产生模糊效果。

javafx.scene.effect 中名为 GaussianBlur 的类表示高斯模糊效果。

9 运动模糊

与高斯效果一样,运动模糊是 JavaFX 中一种使节点模糊的效果。它也使用高斯卷积核来产生模糊效果,但不同之处在于,此效果中使用的是具有指定角度的高斯卷积核。

javafx.scene.effect 中名为 MotionBlur 的类表示运动模糊效果。

10 反射

在 JavaFX 中将反射效果应用于节点时,会在节点底部添加其反射。

javafx.scene.effect 中名为 Reflection 的类表示反射效果。

11 SepiaTone

将棕褐色调效果应用于 JavaFX 中的节点(一般为图像)时,它会被调成红褐色。

javafx.scene.effect 中名为 SepiaTone 的类表示棕褐色调效果。

12 Shadow

此效果会创建具有模糊边缘的指定节点的副本。

javafx.scene.effect 中名为 Shadow 的类表示棕褐色调效果。

13 DropShadow

将此效果应用于节点时,将在指定节点后面创建阴影。

javafx.scene.effect 中名为 DropShadow 的类表示阴影效果。

14 InnerShadow

将此效果应用于节点时,将在节点边缘内创建阴影。

InnerShadow 中名为javafx.scene.effect表示内阴影效果。

15 照明

照明效果用于模拟光源发出的光。光源有多种类型,即聚光

javafx.scene.effect中名为Lighting的类表示照明效果。

16 Light.Distant

将此效果应用于节点时,会模拟光,就像是由远距离光源产生的一样。

远距离光源 − 距离节点较远的光源。在这里,光线从光源向一个方向衰减。

javafx.scene.effect 中名为 Light.Distant 的类表示远距离光源。

17 Light.Spot

将此效果应用于节点时,会模拟光线,就像由聚光灯生成的一样。

聚光灯 光源 − 来自此光源的光线向所有方向衰减。光的强度取决于对象与光源的距离。

javafx.scene.effect 中名为 Light.Spot 的类表示远距离光源。

18 Point.Spot

将此效果应用于节点时,会模拟光,就像由点光源生成一样。

点光源 − 来自此光源的光从单个点向所有方向衰减。光的强度取决于对象与光源的距离。

包 javafx.scene.effect 中名为 Point.Spot 的类表示点光源。