Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaFX中将ImageView缩放到特定高度_Java_Javafx_Imageview_Scaling - Fatal编程技术网

在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);
或者,您甚至可以使用以下方法在加载时调整
图像的大小:

但在您的情况下,由于您希望将其用作预览,因此更合理的做法是以原始大小加载它并存储图像引用,然后您可以在显示原始图像时使用它,以避免重新加载图像