多读书多实践,勤思考善领悟

JavaFX Effects(效果)

本文于1664天之前发表,文中内容可能已经过时。

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

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

将效果应用于节点

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

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

  • 创建节点。
  • 实例化需要应用的效果的相应类。
  • 设置效果的属性。
  • 使用setEffect()方法将效果应用于节点。

创建节点

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Creating an image 
Image image = new Image("https://www.ljjyy.com/img/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类,如下面的代码框所示 -

1
Glow glow = new Glow();

设置效果的属性

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

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

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

添加效果到节点

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

1
imageView.setEffect(glow);

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

序号 形状和描述
1 Color Adjust(颜色调整)您可以通过对图像应用颜色调整效果来调整图像的颜色。这包括调整每个像素的色调,饱和度,亮度对比度javafx.scene.effect的名为ColorAdjust的类表示颜色调整效果。
2 Color Input(颜色输入)颜色输入效果提供与绘制矩形并用颜色填充相同的输出。与其他效果不同,如果此效果应用于任何节点,则它仅显示矩形框(而不是节点)。此效果主要用于传递作为其他效果的输入。包javafx.scene.effect的名为ColorInput的类表示颜色输入效果。
3 Image Input(图像输入)JavaFX中的图像输入效果只是将图像嵌入到JavaFX屏幕中。就像颜色输入效果(它用于将指定的彩色矩形区域作为输入传递给其他效果)一样,图像输入效果用于将指定的图像作为输入传递给另一个效果。包javafx.scene.effect的名为ImageInput的类表示图像输入效果。
4 Blend(混合)通常,混合物是指两种或更多种不同物质或物质的混合物。如果我们应用这种混合效果,它会在同一位置获取两个不同输入的像素,并根据混合模式生成一个组合输出。包javafx.scene.effect的名为Blend的类表示混合效果。
5 Bloom(绽放)在应用布隆效果时,使节点的某些部分中的像素发光。包javafx.scene.effect的名为Bloom的类表示bloom效果。
6 Glow(发光)就像bloom一样,Glow效果使给定的输入图像发光,这种效果使输入的亮像素更亮。包javafx.scene.effect的名为Glow的类表示发光效果。
7 Box Blur(盒子模糊)将此模糊效果应用于节点时,会使其不清楚。Box blur是JavaFX提供的一种模糊效果。在此效果中,当我们将模糊应用于节点时,使用简单的盒式过滤器。包javafx.scene.effect的名为BoxBlur的类表示boxblur效果。
8 GaussianBlur(高斯模糊)就像Box Blur Gaussian一样,它可以模糊JavaFX中的节点。高斯模糊效应的唯一区别是高斯卷积核用于产生模糊效果。包javafx.scene.effect的名为GaussianBlur的类表示高斯模糊效果。
9 MotionBlur(运动模糊)就像高斯效果一样,运动模糊是一种模糊JavaFX节点的效果。它还使用高斯卷积核来产生模糊效果,但不同之处在于高斯卷积核以指定角度使用。包javafx.scene.effect的名为MotionBlur的类表示Motion Blur效果。
10 Reflection(反射)在将反射效果应用于JavaFX中的节点时,会在节点的底部添加对它的反射。名为Reflection的包javafx.scene.effect表示反射效果。
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(灯光)照明效果用于模拟来自光源的光。有不同种类的光源,即。包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的类表示点光源。