JavaFX |反射类
反射类是 JavaFX 的一部分。 Reflection 类用于在输入值的实际图像下方添加反射图像。反射图像不会响应鼠标事件或输入上的包含方法。
类的构造函数:
- Reflection() :创建一个新的反射对象。
- Reflection(double topOffset, double fraction, double topOpacity, double bottomOpacity) :使用指定的 topOffset、fraction、topOpacity 和 bottomOpacity 创建一个新的 Reflection 对象。
常用方法:
Method | Explanation |
---|---|
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 |
下面的程序说明了反射类的使用:
- 使用反射类向图像添加反射的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); } }
输出:
- 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