📜  JavaFX |反射类

📅  最后修改于: 2022-05-13 01:54:22.169000             🧑  作者: Mango

JavaFX |反射类

反射类是 JavaFX 的一部分。 Reflection 类用于在输入值的实际图像下方添加反射图像。反射图像不会响应鼠标事件或输入上的包含方法。

类的构造函数:

  1. Reflection() :创建一个新的反射对象。
  2. Reflection(double topOffset, double fraction, double topOpacity, double bottomOpacity) :使用指定的 topOffset、fraction、topOpacity 和 bottomOpacity 创建一个新的 Reflection 对象。

常用方法:

MethodExplanation
getBottomOpacity()Returns the value of bottomOpacity
getTopOpacity()Returns the value of topOpacity
getFraction()Returns the fraction which the reflected image is of the real image
getTopOffset()Returns the value of top offset
getInput()Returns the value of property input
setBottomOpacity(double v)Sets the value of bottomOpacity
setTopOpacity(double v)Sets the value of topOpacity
setFraction(double v)Sets the fraction which the reflected image is of the real image
setTopOffset(double v)Sets the value of top offset
setInput(Effect v)Sets the value of property input

下面的程序说明了反射类的使用:

  1. 使用反射类向图像添加反射的Java程序:在该程序中,创建FileInputStream并将图像作为文件的输入。使用来自文件输入流的输入创建名为image的图像。从图像中,创建图像视图对象并将其添加到VBox 。然后将 VBox 添加到场景中,并将场景添加到舞台上。创建反射效果并使用setEffect()函数将效果设置为图像视图。
    // Java program to add a reflection to 
    // the image using the reflection class
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.*;
    import javafx.scene.layout.*;
    import javafx.stage.Stage;
    import javafx.scene.image.*;
    import javafx.scene.effect.*;
    import java.io.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Group;
      
    public class reflection_1 extends Application {
      
        // launch the application
        public void start(Stage stage) throws Exception
        {
      
            // set title for the stage
            stage.setTitle("reflection example");
      
            // create a input stream
            FileInputStream input = new FileInputStream("D:\\GFG.png");
      
            // create a image
            Image image = new Image(input);
      
            // create a image View
            ImageView imageview = new ImageView(image);
      
            // create a reflection effect
            Reflection reflection = new Reflection();
      
            // set effect
            imageview.setEffect(reflection);
      
            // create a VBox
            VBox vbox = new VBox(imageview);
      
            // create a scene
            Scene scene = new Scene(vbox, 200, 200);
      
            // set the scene
            stage.setScene(scene);
      
            stage.show();
        }
      
        // Main Method
        public static void main(String args[])
        {
            // launch the application
            launch(args);
        }
    }
    

    输出:

  2. Java程序使用反射类向图像添加反射,并设置顶部偏移量、顶部不透明度、底部不透明度和将显示为反射的图像分数在该程序中,创建 FileInputStream 并将图像作为输入一份文件。名为image的图像是使用来自文件输入流的输入创建的。从图像中,创建图像视图对象并将其添加到VBox 。然后将VBox添加到场景中,并将场景添加到舞台上。创建反射效果并使用setEffect()函数将效果设置为图像视图。底部不透明度、顶部不透明度、顶部偏移量和分数分别使用setBottomOpacity()、setTopOpacity()、setFraction() 和 setTopOffset()函数设置。
    // Java program to add a reflection to the image
    // using the reflection class and set the top 
    // offset, top opacity bottom opacity and fraction
    // of image which will appear as reflection
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.*;
    import javafx.scene.layout.*;
    import javafx.stage.Stage;
    import javafx.scene.image.*;
    import javafx.scene.effect.*;
    import java.io.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Group;
      
    public class reflection_2 extends Application {
      
        // launch the application
        public void start(Stage stage) throws Exception
        {
      
            // set title for the stage
            stage.setTitle("reflection example");
      
            // create a input stream
            FileInputStream input = new FileInputStream("D:\\GFG.png");
      
            // create a image
            Image image = new Image(input);
      
            // create a image View
            ImageView imageview = new ImageView(image);
      
            // create a reflection effect
            Reflection reflection = new Reflection();
      
            // set fraction
            reflection.setFraction(0.6);
      
            // set top Opacity
            reflection.setTopOpacity(0.3);
      
            // set bottom Opacity
            reflection.setBottomOpacity(0.1);
      
            // set top offset
            reflection.setTopOffset(0.5);
      
            // set effect
            imageview.setEffect(reflection);
      
            // create a VBox
            VBox vbox = new VBox(imageview);
      
            // create a scene
            Scene scene = new Scene(vbox, 200, 200);
      
            // set the scene
            stage.setScene(scene);
      
            stage.show();
        }
      
        // Main Method
        public static void main(String args[])
        {
      
            // launch the application
            launch(args);
        }
    }
    

    输出:

注意:上述程序可能无法在在线 IDE 中运行。请使用离线编译器。

参考: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/effect/Reflection.html