Java 使用与完整场景的保留比率调整图像大小
我目前正在写一个程序,我想有一个背景图像,它的大小与保留的比例,当场景正在调整大小以及。我正在使用SceneBuilder for Java 8构建fxml,我已经将图像属性绑定到我的AnchorPane属性,如下所示:Java 使用与完整场景的保留比率调整图像大小,java,javafx,java-8,Java,Javafx,Java 8,我目前正在写一个程序,我想有一个背景图像,它的大小与保留的比例,当场景正在调整大小以及。我正在使用SceneBuilder for Java 8构建fxml,我已经将图像属性绑定到我的AnchorPane属性,如下所示: imageBackground.fitHeightProperty().bind(anchorPaneBackground.heightProperty()); imageBackground.fitWidthProperty().bind(anchorPaneBackgrou
imageBackground.fitHeightProperty().bind(anchorPaneBackground.heightProperty());
imageBackground.fitWidthProperty().bind(anchorPaneBackground.widthProperty());
我现在遇到的问题是,由于保留的比率,如果不能保留比率,我的图像将无法再调整到整个场景
如何“放大”图像,使图像始终显示在整个场景中?我必须使用某种类型的倾听者,还是我忽略了什么
提前谢谢你的帮助 要保留可用于防止图像拉伸的比率,请执行以下操作:
imageBackground.setPreserveRatio(true);
从文档中:
指示在缩放以在拟合边界框内拟合图像时是否保留源图像的纵横比
如果设置为true,则会以以下方式影响此ImageView的尺寸
- 如果仅设置了fitWidth,则会缩放高度以保留比率
- 如果仅设置了fitHeight,则会缩放宽度以保留比率
- 如果两者都设置了,则可以对它们进行缩放,以在保留原始纵横比的情况下在“宽高比”矩形中获得最佳拟合
- 若仅设置了fitWidth,则图像的视图宽度将缩放为匹配,高度不变李>
- 若仅设置了fitHeight,则图像的视图高度将缩放为匹配,且高度不变李>
- 如果两者都已设置,则图像视图将缩放以匹配两者
如果我理解正确,您的目标是:
与其使用
ImageView
,我建议将区域设置为您的图像。然后,您可以将背景图像设置为,这将:
[…]将图像缩放到最小尺寸,同时保留其固有的纵横比(如果有),使其宽度和高度都能完全覆盖背景定位区域
可以通过CSS或FXML以编程方式设置背景
在Java中:
Image image = ...;
BackgroundImage bgImage = new BackgroundImage(
image, // image
BackgroundRepeat.NO_REPEAT, // repeatX
BackgroundRepeat.NO_REPEAT, // repeatY
BackgroundPosition.CENTER, // position
new BackgroundSize(-1, -1, false, false, false, true) // size
);
anchorPaneBackground.setBackground(new Background(bgImage));
在CSS中(请参阅):
/*或您为目标区域指定的任何ID/样式类*/
#无吗啡背景{
-fx背景图像:url(“你的/图像/路径”);
-背景尺寸:封面;
-背景位置:中心;
-外汇背景重复:无重复;
}
在FXML中(不能保证尽可能简洁):
注意:我不相信您可以在场景生成器中设置区域的背景(添加样式表除外)。如果我错了,请纠正我。不要使用图像视图
,而是将某个区域的背景
(可能是场景的根)设置为您的图像。然后将其大小设置为。您可以在代码或CSS.1中执行此操作。请定义所需的行为:是否要保持图像纵横比或拉伸图像以适合场景?这些可能相互矛盾。2.Post@c0der正如我在问题中已经说过的,纵横比应该保留,而不是拉伸。很抱歉打扰您。我不会再这样做了。您确实错过了@c0der comment中的第二句话:按照参考帮助页面上的建议执行。。