如何在JavaFX ImageView无法显示图像时剪切图像

时间:2014-08-06 03:51:17

标签: java image javafx-2 fxml

我有一个GIF图像文件,我在使用JavaFX的ImageView中显示。我允许管理员更改徽标文件,我想确保它正确缩放以适应显示区域。我把这一切都搞定了,直到我的文件比 fitHeight 更宽更高。

如果文件不是快乐大小,则不会显示图像。我想要一些后备策略的建议。我的首选选项是:

  • ImageView 之后检测图像是否无法显示。 setImage ()方法
    • 然后我可以重新加载图片并将fitHeight更改为已知的安全值并发出警告,或
  • 强制显示图像,以便将其剪裁为fitWidth和fitHeight
  • 如果文件不兼容,请保留上一张图片
    • 通过保存重新使用上一张图片: this.logo.getImage()
    • 技巧问题:我怎么知道图像不显示/不兼容?
  • 我想知道是否有可以检查以验证/修复图片加载的事件?

我愿意接受其他策略建议。对于一些上下文,徽标图像由URL通过配置文件和在(无人值守)启动时加载的FXML指定。如果在显示图像时出现问题,我们无法在屏幕上显示空白框。

我无法识别JavaFX调用,以通知我在 setImage ()调用后图像是否实际可见。公平地说,场景刷新发生在此之后。

我已经确定了以下顶行的来源:

 <ImageView fx:id="logo" fitHeight="320.0" fitWidth="600.0" pickOnBounds="true" preserveRatio="true" GridPane.halignment="CENTER" GridPane.valignment="CENTER">

此版本无法显示:

 <ImageView fx:id="logo" fitHeight="360.0" fitWidth="600.0" pickOnBounds="true" preserveRatio="true" GridPane.halignment="CENTER" GridPane.valignment="CENTER"> 

fitHeight值约为350工作,由实验确定。当fitHeight太高时,图像不可见(不显示)。

可能相关

0 个答案:

没有答案