📜  JavaFX |运动模糊类

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

JavaFX |运动模糊类

MotionBlur 是 JavaFX 的一部分。 MotionBlur 类使用高斯卷积核实现运动模糊效果,具有可配置的半径和角度。 MotionBlur 类继承Effect类。

类的构造函数:

  1. MotionBlur() : 创建一个新的 MotionBlur 对象。
  2. MotionBlur(double a, double r) : 创建一个具有指定角度和半径的新 MotionBlur 对象。

常用方法:

MethodExplanation
getAngle()Return the angle of the MotionBlur object
getRadius()Return the radius of the MotionBlur object
getInput()Return the input of the MotionBlur object
setAngle(double v)Sets the angle of the MotionBlur object
getRadius(double v)Set the radius of the MotionBlur object
setInput(Effect v)Sets the input of the MotionBlur object

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

  1. 导入图像并为其添加运动模糊效果的Java程序:在该程序中,创建FileInputStream并将图像作为文件的输入。名为image的图像是使用来自文件输入流的输入创建的。从图像中,创建图像视图对象并将其添加到VBox 。然后将VBox添加到场景中,并将场景添加到舞台上。使用作为参数传递的指定级别创建MotionBlur效果,并使用setEffect()函数将效果设置为图像视图。
    // Java program to import an image and
    // add Motion Blur effect to it
    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 motion_blur_1 extends Application {
      
        // launch the application
        public void start(Stage stage) throws Exception
        {
      
            // set title for the stage
            stage.setTitle("MotionBlur 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 Motion blur effect
            MotionBlur motion_blur = new MotionBlur();
      
            // set effect
            imageview.setEffect(motion_blur);
      
            // 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添加到场景中,并将场景添加到舞台上。使用作为参数传递的指定级别创建MotionBlur效果,并使用setEffect()函数将效果设置为图像视图。运动模糊的半径和角度是使用setRadius()setAngle()函数指定的。
    // Java program to import an image and
    // add Motion Blur effect to it with 
    // specified angle and radius
    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 motion_blur_2 extends Application {
      
        // launch the application
        public void start(Stage stage) throws Exception
        {
      
            // set title for the stage
            stage.setTitle("MotionBlur 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 Motion blur effect
            MotionBlur motion_blur = new MotionBlur();
      
            // set Radius
            motion_blur.setRadius(25.0f);
      
            // set angle
            motion_blur.setAngle(400.0f);
      
            // set effect
            imageview.setEffect(motion_blur);
      
            // 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/MotionBlur.html