2016-12-03 197 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中的表达式绑定。)