在JavaFX中将ImageView缩放到特定高度
我的菜单中有一个在JavaFX中将ImageView缩放到特定高度,java,javafx,imageview,scaling,Java,Javafx,Imageview,Scaling,我的菜单中有一个Imageview,显示所选地图的预览 但这些地图的大小可能会有所不同,在我的菜单中我有足够的水平空间,但在垂直方向上我有限制。所以,我想要的是缩放ImageView,使其高度变为40像素(我这里也有一个问题),并且它的宽度相应地改变,不会变形 此外,如果有一种方法可以使高度自动适应其线条的高度,我将不胜感激 这是我的密码: Label mapChooserLabel = new Label("This is the map you will play on, click to
Imageview
,显示所选地图的预览
但这些地图的大小可能会有所不同,在我的菜单中我有足够的水平空间,但在垂直方向上我有限制。所以,我想要的是缩放ImageView
,使其高度变为40像素(我这里也有一个问题),并且它的宽度相应地改变,不会变形
此外,如果有一种方法可以使高度自动适应其线条的高度,我将不胜感激
这是我的密码:
Label mapChooserLabel = new Label("This is the map you will play on, click to change");
try {
mapPreview = new ImageView(
new Image(getClass().getResource("/files/images/maps/" + chosenMapName + ".gif").toURI().toURL().toString())
);
mapPreview.setFitHeight(40);
mapPreview.setOnMouseClicked(event -> System.out.println("towerChooserPopup should open now!"));
} catch (MalformedURLException | URISyntaxException e) {
e.printStackTrace();
}
HBox mapChooserWrapper = new HBox(mapChooserLabel, mapPreview);
mapChooserWrapper.setId("lineWrapper");
这是我的css:
#lineWrapper{
-fx-alignment: center;
-fx-spacing: 2px;
}
您可以使用ImageView
的方法:
指示是否保留源图像的纵横比
缩放以在拟合边界框内拟合图像时
如果设置为true,则会影响中此ImageView的尺寸
沿途*
- 如果仅设置了fitWidth,则会缩放高度以保留比率
- 如果仅设置了fitHeight,则会缩放宽度以保持比率
- 如果两者都设置了,则可以对它们进行缩放,以在保留原始纵横比的情况下在“宽高比”矩形中获得最佳拟合
mapPreview.setFitHeight(40);
mapPreview.setPreserveRatio(true);
或者,您甚至可以使用以下方法在加载时调整图像的大小:
但在您的情况下,由于您希望将其用作预览,因此更合理的做法是以原始大小加载它并存储图像引用,然后您可以在显示原始图像时使用它,以避免重新加载图像。您可以使用ImageView
的方法:
指示是否保留源图像的纵横比
缩放以在拟合边界框内拟合图像时
如果设置为true,则会影响中此ImageView的尺寸
沿途*
- 如果仅设置了fitWidth,则会缩放高度以保留比率
- 如果仅设置了fitHeight,则会缩放宽度以保持比率
- 如果两者都设置了,则可以对它们进行缩放,以在保留原始纵横比的情况下在“宽高比”矩形中获得最佳拟合
因此,在您的代码中:
mapPreview.setFitHeight(40);
mapPreview.setPreserveRatio(true);
或者,您甚至可以使用以下方法在加载时调整图像的大小:
但在您的情况下,由于您希望将其用作预览,因此更合理的做法是以原始大小加载它并存储图像引用,然后您可以在显示原始图像时使用它,以避免重新加载图像