JavaFX - 效果



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

在 JavaFX 中,您可以为节点设置各种效果,例如光晕、模糊辉光。这些效果中的每一个都由一个类表示,所有这些类都位于名为javafx.scene.effect的包中。

将效果应用于节点

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

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

  • 创建节点。

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

  • 设置效果的属性。

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

创建节点

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

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

示例

//Creating an image 
Image image = new Image("https://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);  

实例化相应的类

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

例如 - 要应用辉光效果,您需要实例化Glow类,如下面的代码框所示 -

Glow glow = new Glow();

设置效果的属性

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

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

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

将效果添加到节点

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

imageView.setEffect(glow); 

JavaFX 效果类型

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

序号 效果和描述
1 颜色调整

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

名为ColorAdjust的类(位于javafx.scene.effect包中)表示颜色调整效果。

2 颜色输入

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

名为ColorInput的类(位于javafx.scene.effect包中)表示颜色输入效果。

3 图像输入

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

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

名为ImageInput的类(位于javafx.scene.effect包中)表示图像输入效果。

4 混合

通常,混合是指两种或多种不同事物或物质的混合。如果我们应用此混合效果,它将获取两个不同输入在同一位置的像素,并根据混合模式生成组合输出。

名为Blend的类(位于javafx.scene.effect包中)表示混合效果。

5 光晕

应用光晕效果后,节点某些部分的像素会发光。

名为Bloom的类(位于javafx.scene.effect包中)表示光晕效果。

6 辉光

与光晕类似,辉光效果使给定的输入图像发光,此效果使输入的亮像素更亮。

名为Glow的类(位于javafx.scene.effect包中)表示辉光效果。

7 方框模糊

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

名为BoxBlur的类(位于javafx.scene.effect包中)表示方框模糊效果。

8 高斯模糊

与方框模糊一样,高斯模糊是用于模糊 JavaFX 中节点的效果。高斯模糊效果的唯一区别在于使用高斯卷积核来产生模糊效果。

名为 GaussianBlur 的类(位于javafx.scene.effect包中)表示高斯模糊效果。

9 运动模糊

与高斯效果类似,运动模糊是用于模糊 JavaFX 中节点的效果。它也使用高斯卷积核来产生模糊效果,但区别在于在此效果中,高斯卷积核与指定的角度一起使用。

名为MotionBlur的类(位于javafx.scene.effect包中)表示运动模糊效果。

10 反射

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

名为Reflection的类(位于javafx.scene.effect包中)表示反射效果。

11 棕褐色

将棕褐色效果应用于 JavaFX 中的节点(通常为图像)时,会用红棕色对其进行着色。

名为SepiaTone的类(位于javafx.scene.effect包中)表示棕褐色效果。

12 阴影

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

名为Shadow的类(位于javafx.scene.effect包中)表示棕褐色效果。

13 投影

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

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

14 内阴影

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

名为InnerShadow的类,位于javafx.scene.effect包中,表示内阴影效果。

15 灯光

灯光效果用于模拟光源发出的光。有不同类型的灯光源,即点光源平行光源聚光灯

名为Lighting的类,位于javafx.scene.effect包中,表示灯光效果。

16 Light.Distant

将此效果应用于节点时,会模拟节点上的光线,就像它是由远处的光源产生的。

平行光源 - 一个距离节点很远的源。在这里,光从源向一个方向衰减。

名为Light.Distant的类,位于javafx.scene.effect包中,表示平行光源。

17 Light.Spot

将此效果应用于节点时,会模拟节点上的光线,就像它是由聚光灯产生的。

聚光灯源 - 此光源的光向所有方向衰减。光强取决于物体与光源的距离。

名为Light.Spot的类,位于javafx.scene.effect包中,表示平行光源。

18 Point.Spot

将此效果应用于节点时,会模拟节点上的光线,就像它是由点光源产生的。

点光源 - 此光源的光从一个点向所有方向衰减。光强取决于物体与光源的距离。

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

广告