【问题标题】:Javafx center image in imageview with background loading带有背景加载的图像视图中的Javafx中心图像
【发布时间】:2018-11-23 19:16:11
【问题描述】:

我想在 ImageView 中将图像居中。 ImageViews 用于列表中图片的缩略图,我使用了宽度和高度为 90 的固定视口,使其看起来更干净。 图像使用BackgroundLoading,所以在将图像放入ImageView的那一刻我不知道图像的尺寸。当然,我不想拉伸(或裁剪)图像。我在加载图像时使用了 preserveRatio。 是否有某种方法可以将居中的图像拟合到 ImageView 中,而不是左上角?图片的最长边始终为 90。

【问题讨论】:

  • 我通过将 imageView 放入一个上下都有一个空窗格的 VBox 解决了这个问题,最小高度为 0,预高度为 45(我选择 45,因为它是最大高度的一半,但你可能使用任何你喜欢的数字)。这是代码:

标签: java image javafx imageview


【解决方案1】:

由于代码太长,无法注释,这里是:

    Image image = new Image(pictureURL, 90, 90, true, true, true)

    ImageView imgView = new ImageView(image);        
    VBox imageSpacingVBox = new VBox();

    Pane spaceAbove = new Pane();
    spaceAbove.setMinHeight(0);
    spaceAbove.setPrefHeight(45);

    Pane spaceBelow = new Pane();
    spaceBelow.setMinHeight(0);
    spaceBelow.setPrefHeight(45);

    imageSpacingVBox.setMaxHeight(90);
    imageSpacingVBox.setPrefHeight(90);
    imageSpacingVBox.setMinHeight(90);

    imageSpacingVBox.setMaxWidth(90);
    imageSpacingVBox.setPrefWidth(90);
    imageSpacingVBox.setMinWidth(90);

    imageSpacingVBox.getChildren().addAll(spaceAbove, imgView, spaceBelow);

如果有人有更简单、更优雅的解决方案,我很想听听。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多