JavaFX - MediaView getViewport() 方法



在 JavaFX 中,'MediaView' 类中的 getViewport() 方法用于检索媒体帧中的矩形视口。此视口定义在 'MediaView' 中可见的媒体部分。

当我们将 'ObjectProperty' 设置为保存 Rectangle2D 对象时,我们可以检索视口。此属性可用于检索和设置 MediaView 的视口。设置视口时,将提供一个 Rectangle2D 对象,指定要显示的媒体的矩形区域。

语法

以下是 'MediaView' 类的 'getViewport()' 方法的语法:

public final Rectangle2D getViewport()

参数

此方法不接受任何参数。

返回值

此方法返回一个保存 'Rectangle2D' 对象的 objectProperty,该对象表示可见的媒体的矩形区域。

示例 1

以下是一个演示 'MediaView' 类的 getViewport() 方法的基本示例:

在此示例中,我们演示了将 MediaView 的平滑属性设置为 'true',这在缩放或转换视频时使用更高质量的过滤算法。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import javafx.geometry.Rectangle2D;
import java.io.File;
public class GetViewport extends Application {
   @Override
   public void start(Stage stage) {
      File mediaPath = new File("./audio_video/sampleTP.mp4");
      Media media = new Media(mediaPath.toURI().toString());

      // Create a MediaPlayer object and attach the Media object
      MediaPlayer mediaPlayer = new MediaPlayer(media);

      // Create the MediaView
      MediaView mediaView = new MediaView(mediaPlayer);

      // Set the viewport to show a specific rectangular area of the media
      Rectangle2D viewportRect = new Rectangle2D(150, 150, 300, 250);
      mediaView.setViewport(viewportRect);

      // get the viewport 
      Rectangle2D currentViewport = mediaView.getViewport();
      System.out.println("current view port: " + currentViewport);

      Group root = new Group(mediaView);
      Scene scene = new Scene(root, 550, 270);
      stage.setScene(scene);
      stage.setTitle("MediaView Viewport Example");
      stage.show();

      mediaPlayer.play();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

输出

以下是代码的输出:

getviewport

控制台中可见 Rectangle2D 的详细信息。

current view port: Rectangle2D [minX=150.0, minY=150.0, maxX=450.0, maxY=400.0, width=300.0, height=250.0]

示例 2

在此示例中,我们检索 getViewport() 方法的值,而不设置 setViewport() 方法的 viewportProperty 的值。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import javafx.geometry.Rectangle2D;
import java.io.File;
public class GetViewport extends Application {
   @Override
   public void start(Stage stage) {
      File mediaPath = new File("./audio_video/sampleTP.mp4");
      Media media = new Media(mediaPath.toURI().toString());

      // Create a MediaPlayer object and attach the Media object
      MediaPlayer mediaPlayer = new MediaPlayer(media);

      // Create the MediaView
      MediaView mediaView = new MediaView(mediaPlayer);

      // get the viewport 
      Rectangle2D currentViewport = mediaView.getViewport();
      System.out.println("current view port: " + currentViewport);

      Group root = new Group(mediaView);
      Scene scene = new Scene(root, 550, 270);
      stage.setScene(scene);
      stage.setTitle("MediaView Viewport Example");
      stage.show();

      mediaPlayer.play();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

输出

以下是代码的输出,显示视口的属性值为“null”。

current view port: null
广告

© . All rights reserved.