2016-12-03 259 views
0

我的問題是,在使用JavaFX中的應用程序窗口大小操作期間,如何實現圖像自動調整大小?可以直接在SceneBuilder中完成嗎?JavaFX FXML-SceneBuilder-Image-resizable

+0

相關:[調整圖像大小以適合父節點](http://stackoverflow.com/questions/12630296/resizing-images-to-fit-the-父節點)和[在JavaFX中調整窗口大小時如何調整圖像大小](http://stackoverflow.com/questions/22993550/how-to-resize-an-image-when-resizing-the-window-in -javafx) – jewelsea

回答

2

它會將其WidthPropertyHeightProperty與窗口大小綁定。我們假設節點root反映窗口的大小。

ImageView iv = new ImageView(); 
iv.fitWidthProperty().bind(root.widthProperty()); 
iv.fitHeightProperty().bind(root.heightProperty()); 

現在它與父母的屬性劃傷(root)。您也可以選擇不同的節點或執行一些計算來修改大小。

2

不使用ImageView,但如果添加圖像作爲背景圖像的Region,這意味着Region可以調整大小,因此可以將背景圖片,如果使用適當的設置。例如。你可以使用下面的CSS屬性包括在Region的計算器標誌:

-fx-background-image: url('http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a'); 
-fx-background-size: contain; 
-fx-background-repeat: no-repeat; 
-fx-background-position: center; 

(在上面的代碼中屬性名和值由:分隔和;是不是值的一部分,這是寫成你寫在一個css樣式表中的規則。)

你可以用stretch替換contain不保留高寬比。在這種情況下,您不需要-fx-background-position屬性。

關於使用的屬性更多信息可以在CSS doc for Region.

這應該只要你將它添加到正在調整的Region工作中找到。如果要將圖像調整爲完整場景大小,則需要設置根目錄Pane處的屬性。

除此之外,您可能需要編寫自定義控件。 (AFAIK無法使用SceneBuilder中的表達式綁定。)