Javafx 简明教程

JavaFX - Reflection Effect

反射在科学上定义为当光线照射到表面(称为反射表面,如镜子)上时发生的现象,它会被反射回来。在这种情况下,这些光波线上的所有物体还会作为图像投影回来。你也可以在 JavaFX 应用程序中应用这个反射效果。

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

javafx.scene.effect 中名为 Reflection 的类表示反射效果。该类包含四个属性,它们是 -

  1. topOpacity - 该属性是 double 类型,表示反射的顶部极值不透明度值。

  2. bottomOpacity - 该属性是 double 类型,表示反射的底部极值不透明度值。

  3. input - 该属性是 Effect 类型,它表示反射效果的输入。

  4. topOffset - 该属性是 double 类型,表示输入底部和反射顶部之间的距离。

  5. fraction - 该属性是 double 类型,表示输出中可见输入的分数。分数值的范围是 0.0 到 1.0。

Example

以下程序是一个演示反射效果的示例。在此,我们用 DARKSEAGREEN 颜色绘制文本“欢迎来到 Tutorialspoint”,并对其应用反射效果。

将代码保存到 ReflectionEffectExample.java 命名的文件中。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.Reflection;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;

public class ReflectionEffectExample extends Application {
   @Override
   public void start(Stage stage) {
      //Creating a Text object
      Text text = new Text();

      //Setting font to the text
      text.setFont(Font.font(null, FontWeight.BOLD, 40));

      //setting the position of the text
      text.setX(60);
      text.setY(150);

      //Setting the text to be embedded.
      text.setText("Welcome to Tutorialspoint");

      //Setting the color of the text
      text.setFill(Color.DARKSEAGREEN);

      //Instanting the reflection class
      Reflection reflection = new Reflection();

      //setting the bottom opacity of the reflection
      reflection.setBottomOpacity(0.0);

      //setting the top opacity of the reflection
      reflection.setTopOpacity(0.5);

      //setting the top offset of the reflection
      reflection.setTopOffset(0.0);

      //Setting the fraction of the reflection
      reflection.setFraction(0.7);

      //Applying reflection effect to the text
      text.setEffect(reflection);

      //Creating a Group object
      Group root = new Group(text);

      //Creating a scene object
      Scene scene = new Scene(root, 600, 300);

      //Setting title to the Stage
      stage.setTitle("Reflection effect example");

      //Adding scene to the stage
      stage.setScene(scene);

      //Displaying the contents of the stage
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

使用以下命令,从命令提示符编译并执行已保存的 java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls ReflectionEffectExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls ReflectionEffectExample

Output

执行后,上述程序会生成如下所示的 JavaFX 窗口。

reflection effect