JavaFX - 效果

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

在 JavaFX 中,您可以为节点设置各种效果,例如 bloom、blur 和 glow。每种效果都由一个类表示,所有这些类都可以在名为 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 的类表示点光源。