JavaFX 缩小 ImageView

JavaFX down-size ImageView

我有一个包含矩形和顶部图像的组。我希望矩形可以重新调整大小并且图像应该具有固定大小,但矩形小于图像的情况除外。然后图像应该缩小矩形。

图像也应该始终居中并有一些填充。

我已经完成了大部分这些部分,除了图像的缩小部分。我不知道为什么,但图像根本不会缩小。这就是我得到的。

    Group group = new Group()
    GeometryNode<Rectangle> rectangle = new GeometryNode<>();
    rectangle.setGeometry(new Rectangle(0, 0, 60, 60));

    ImageView imageView = new ImageView(image);
    imageView.setPreserveRatio(true);

    ImageViewPane imagePane = new ImageViewPane(imageView);
    imagePane.setMinSize(0, 0);
    imagePane.setMaxSize(50, 50);

    StackPane stackPane = new StackPane();

    stackPane.getChildren().add(rectangle);
    stackPane.getChildren().add(imagePane);
    group.getChildren().add(stackPane);

您希望 ImageViewfitWidthfitHeight 属性随着 StackPane 的尺寸变化而变化。所以你可以做

double padding = ... ;

imageView.setPreserveRatio(true);
imageView.fitWidthProperty().bind(
    Bindings.min(stackPane.widthProperty().subtract(padding), image.widthProperty()));
imageView.fitHeightProperty().bind(
    Bindings.min(stackPane.heightProperty().subtract(padding), image.heightProperty()));