簡體   English   中英

如何使JavaFX MediaView拉伸媒體填充父容器?

[英]How do I make JavaFX MediaView stretch media to fill parent container?

我正在嘗試使視頻的尺寸自動拉伸並填充MediaView並保持視頻的原始長寬比。 基本上,我希望我的MediaPlayer像調整視頻大小一樣適合父容器的大小調整。

如果有人能闡明如何實現這一目標,將不勝感激。

這是一個拉伸到包含場景的示例,該場景由Dimension“大小”設置:

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()));

“ .fxml”文件中更具聲明性的方式是:

...
<Pane fx:id="mediaViewPane">
  <children>
     <MediaView fx:id="videoView" fitHeight="${mediaViewPane.height}" fitWidth="${mediaViewPane.width}" layoutX="1.0" />
  </children>
</Pane>
...

您可以對“ .fxml”中的任何屬性使用“ $ {...}”語法進行表達式綁定。 如果要調用UI元素,則必須提供“ fx:id”。 例如,在這種情況下,它是fx:id =“ mediaViewPane”。

因此,您不必關心代碼中的UI內容。 對我來說,它有點清潔。

剛剛意識到沒有人回答這個,所以我會回答。

只需將媒體播放器的fitWidthProperty設置為MediaView的fitWidthProperty,即可:

player.fitWidthProperty().bind(mediaView.widthProperty());

高度也一樣(如果需要的話),還保留了Ratio和其他內容。

我也為此感到掙扎,但我做到了

mediaView.fitWidthProperty().bind(stage.widthProperty());
mediaView.fitHeightproperty().bind(stage.heightProperty());

我為我工作。 mediaView以與舞台/窗口相同的大小播放。 希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM