[英]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.