Javafx 简明教程

JavaFX - Effects

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

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

Applying Effects to a Node

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

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

  1. Create the node.

  2. 实例化需要应用的影响的相应类。

  3. 设置效果的属性。

  4. 使用 setEffect() 方法向节点应用效果。

Creating the Nodes

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

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

//Creating an image
Image image = new Image("https://www.tutorialspoint.com/green/images/logo.png");

//Setting the image view
ImageView imageView = new ImageView(image);

//Setting the position of the image
imageView.setX(100);
imageView.setY(70);

//setting the fit height and width of the image view
imageView.setFitHeight(200);
imageView.setFitWidth(400);

//Setting the preserve ratio of the image view
imageView.setPreserveRatio(true);

Instantiating the Respective Class

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

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

Glow glow = new Glow();

Setting the Properties of the Effect

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

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

//setting the level property
glow.setLevel(0.9);

Adding Effect to the Node

最后,你可以使用 setEffect() 方法向节点应用所需的效果。例如:要将发光效果设置到图像节点,你需要按照如下方式将 Glow 类的对象传递给该方法 −

imageView.setEffect(glow);

Types of JavaFX Effects

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

S.No

Effect and Description

1

Color Adjust 你可以通过应用颜色调整效果来调整图像颜色。这包括调整每个像素上的 hue, saturation, brightnesscontrastjavafx.scene.effect 中的 ColorAdjust 类表示颜色调整效果。

2

Color Input 颜色输入效果与绘制矩形并用颜色填充的效果相同。与其他效果不同,如果此效果应用于任何节点,它只显示一个矩形框(而不是该节点)。此效果主要用作其他效果的输入。包 javafx.scene.effect 中的 ColorInput 类表示颜色输入效果。

3

JavaFX 中的图像输入效果只是将图像嵌入到 JavaFX 屏幕中。与颜色输入效果(用于将指定颜色的矩形区域作为输入传递给其他效果)一样,图像输入效果用于将指定图像作为输入传递给另一个效果。包 javafx.scene.effect 中的 ImageInput 类表示图像输入效果。

4

Blend 通常,混合表示两种或两种以上不同事物或物质的混合。如果我们应用此混合效果,它将使用同一位置的两个不同输入的像素,并基于 blend mode 生成组合输出。包 javafx.scene.effect 中的 Blend 类表示混合效果。

5

Bloom 在应用绽放效果时,会让节点部分中的一些像素发光。包 javafx.scene.effect 中的 Bloom 类表示绽放效果。

6

Glow 与绽放效果一样,发光效果使给定的输入图像发光,此效果会让输入图像中的亮像素更亮。包 javafx.scene.effect 中的 Glow 类表示发光效果。

7

Box Blur 在应用此模糊效果时,节点变得模糊不清。盒子模糊是 JavaFX 提供的一种模糊效果。在此效果中,当我们对一个节点应用模糊时,会使用一个简单的盒子过滤器。包 javafx.scene.effect 中的 BoxBlur 类表示盒子模糊效果。

8

GaussianBlur 与盒子模糊一样,高斯模糊是模糊 JavaFX 中节点的效果。在 Gaussian Blur effect 中唯一的区别是,使用高斯卷积核来产生模糊效果。包 javafx.scene.effect 中的 GaussianBlur 类表示高斯模糊效果。

9

MotionBlur 与高斯模糊效果一样,动态模糊是模糊 JavaFX 中节点的效果。它也使用高斯卷积核来产生模糊效果,但这其中的差别在于此效果中,高斯卷积核与一个指定角度一起使用。包 javafx.scene.effect 中的 MotionBlur 类表示动态模糊效果。

10

Reflection 在 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 将这种效果应用到节点后,节点的边缘会创建阴影。包 javafx.scene.effect 中名为 InnerShadow 的类表示内阴影效果。

15

Lighting 照明效果用于模拟光源发出的光。有不同类型的光源,即 pointdistantspot 。包 javafx.scene.effect 中名为 Lighting 的类表示照明效果。

16

Light.Distant 将这种效果应用到节点后,节点上模拟出一束光,就像来自遥远的某个光源一样。 Distant Light Source − 一个距离节点很远的光源。在这里,光源沿一个方向衰减。包 javafx.scene.effect 中名为 Light.Distant 的类表示遥远的光源。

17

Light.Spot 将这种效果应用到节点后,节点上模拟出一束光,就像来自局部照明灯一样。 Spot light Source − 该光源发出的光沿所有方向衰减。光的强度取决于物体与光源之间的距离。包 javafx.scene.effect 中名为 Light.Spot 的类表示遥远的光源。

18

Point.Spot 将这种效果应用到节点后,节点上模拟出一束光,就像来自某个点光源一样。 Point Light Source − 该光源发出的光从一个点沿所有方向衰减。光的强度取决于物体与光源之间的距离。包 javafx.scene.effect 中名为 Point.Spot 的类表示点光。