我的问题是,如何在JavaFX中使用应用程序窗口的大小来操作期间实现图像的自动调整大小?可以直接在SceneBuilder中完成吗?
答案 0 :(得分:3)
不使用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样式表中。)
您可以将contain
替换为stretch
,以保留宽高比。在这种情况下,您不需要-fx-background-position
属性。
有关所用属性的更多信息,请参阅CSS doc for Region
.
只要您将其添加到已调整大小的Region
,这应该可以正常工作。如果要将图像调整为完整场景大小,则需要在根Pane
设置属性。
除此之外,您可能需要编写自定义控件。 (AFAIK无法使用SceneBuilder中的表达式绑定。)
答案 1 :(得分:2)
它可以将WidthProperty
和HeightProperty
绑定到窗口大小。我们假设节点root
反映了窗口的大小。
ImageView iv = new ImageView();
iv.fitWidthProperty().bind(root.widthProperty());
iv.fitHeightProperty().bind(root.heightProperty());
现在它与父母的属性(root
)划痕。您也可以选择不同的节点或执行一些计算来修改大小。