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 的类表示点光源。 |