我正在尝试让我的视频尺寸自动拉伸并填充MediaView并保持视频的原始宽高比.基本上,我希望我的MediaPlayer适合调整大小等父容器,就像所有视频播放器一样.
如果有人能够阐明如何实现这一目标,那将非常感谢,谢谢.
这是拉伸到包含场景的示例,场景由尺寸"尺寸"设置:
final MediaPlayer videoPlayer = new MediaPlayer(
new Media(new File(videoPath).toURI().toString()));
MediaView mv = new MediaView(videoPlayer);
DoubleProperty mvw = mv.fitWidthProperty();
DoubleProperty mvh = mv.fitHeightProperty();
mvw.bind(Bindings.selectDouble(mv.sceneProperty(), "width"));
mvh.bind(Bindings.selectDouble(mv.sceneProperty(), "height"));
mv.setPreserveRatio(true);
setScene(new Scene(new Group(mv), size.getWidth(), size.getHeight()));
Run Code Online (Sandbox Code Playgroud)
".fxml"文件中更具说明性的方式是:
...
<Pane fx:id="mediaViewPane">
<children>
<MediaView fx:id="videoView" fitHeight="${mediaViewPane.height}" fitWidth="${mediaViewPane.width}" layoutX="1.0" />
</children>
</Pane>
...
Run Code Online (Sandbox Code Playgroud)
您可以对".fxml"中的任何属性使用"$ {...}"语法进行表达式绑定.如果要调用UI元素,则必须提供"fx:id".例如,在这种情况下,它是fx:id ="mediaViewPane".
因此,您不必关心代码中的UI内容.对我来说它有点清洁.
刚刚发现没有人回答这个问题,所以我来回答一下。
只需将媒体播放器的 fitWidthProperty 设置为 MediaView 的 fitWidthProperty 即可:
player.fitWidthProperty().bind(mediaView.widthProperty());
Run Code Online (Sandbox Code Playgroud)
高度也一样(如果你愿意的话),并且还保留比率和其他东西。