JavaFX:ImageView的最大尺寸

5

这可能听起来像是设置JavaFX ImageView的最大尺寸,但实际上并不相同。

我想限制ImageView的最大尺寸。不幸的是,似乎唯一设置ImageView大小的方法是fitWidth和fitHeight,然而如果图片小于fit值,则会放大图片。

我尝试将fitWidth / fitHeight设置为0 / 0,并将ImageView包装到设置maxWidth的窗格中-没有成功(图像以原始大小显示)。

对我来说,这似乎无法通过JavaFX实现,但我不敢相信它。但我在网上找不到任何内容。有什么技巧/错误/解决方法吗?

3个回答

2
如果您不想让图片被拉伸,可以使用以下代码:
setPreserveRatio(true);

然后你可以根据需要自由调整宽度和高度
ImageView setPreserveRatio javadoc


在此方法的javadoc中,也提供了缩放规则。


我应该使用“放大”而不是“拉伸”。设置任何一个适配属性会导致小于该属性的任何图像被放大。如果原始图像尺寸更小,我想保持其原始大小,但限制其最大长度。 - Michel Jung

0

您可以获取实际的图像资源并查询其宽度/高度以用于适合值:

  Image image = imageView.getImage();

  double nativeWidth = image.getWidth();
  double nativeHeight = image.getHeight();

0

你只需要添加一个if语句,将那些大于maxsize的设置为固定大小。其余部分将保持原始大小。

        ImageView im = new ImageView();
        im.setImage(image);
        im.maxHeight(690 - 10);   
        int yoursize = 690; 
        if(im.maxHeight(690 - 10)> yoursize ){
           im.setFitHeight(690- 10);  
           System.out.println("Fix Size : 690 ");
        }
        im.setPreserveRatio(true);
        im.setSmooth(true);
        im.setCache(true);           

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接