image - JavaFX 2.2 图像支持 .ico?

标签 image javafx-2 ico

我正在开发一个必须具有自定义图标的应用程序。提供的图标在所有尺寸(256x256、48x48、32x32)中都是相同的,但在 16x16 中图标被简化。

我考虑过 .ico 格式(我可以在其中存储所有不同的图标并让操作系统显示最好的图标),但 javafx.scene.image 似乎不支持它。 (我还没有找到任何关于这一点的确认)。

这是我设置图标的方法

stage.getIcons().add(new Image(getClass().getResourceAsStream("/path/to/icon.ico")));

在这种情况下,永远不会显示图标。如果我将此图标转换为 .png 图像,这可以工作,但强制始终显示相同的图标(即使是 16x16)。

JavaFX 2.2 中有没有办法显示 .ico(即使是以一种 hacky 的方式)还是我必须使用其他图像格式?

更新

我将 .ico 分成多个 png(每个尺寸一个),然后将它们一一加载。

stage.getIcons().add(new Image(getClass().getResourceAsStream("/path/to/icon_16x16.png")));
stage.getIcons().add(new Image(getClass().getResourceAsStream("/path/to/icon_256x256.png")));

256x256 和 16x16 是两个不同的图像,但 16x16 永远不会显示在应用程序的左上角(尽管这是最接近的尺寸)。

最佳答案

功能请求

查看相关功能请求:

该功能目前尚未分配给某个版本,但如果您愿意,您可以对其进行投票或评论。

使用第三方库加载 ico 文件

同时,您可以使用各种实用程序在 java.awt.image.BufferedImage 中创建图标。格式,然后使用 SwingFXUtils 将它们转换为 JavaFX 。 haraldK 在他的回答中提供了这种方法的示例。另一个例子是fav icon fetcher for the willow browser ,它使用 image4j库,尽管 haraldK 的十二只猴子库可能是更好用的库。您的另一种选择是将基于 awt 的图标库之一的源移植到 JavaFX,使用 WritableImage .

建议

你不使用 png 因为它总是显示 16x16 的原因对我来说有点奇怪,因为 stage.getIcons()文档返回您可以添加的图像列表(您不限于添加单个图标)。来自javadoc:

Gets the icon images to be used in the window decorations and when minimized. The images should be different sizes of the same image and the best size will be chosen, eg. 16x16, 32,32.

其他问题

What if, depending on the size, the image is not always the same

提供不同的图像可能没问题。如果系统插入提供的图像来创建未提供的尺寸的图标,这可能会导致问题 - 但我认为系统不太可能这样做。 “同一图像的图像应该具有不同的尺寸”更多的是指导原则,而不是实际规则。如果您需要不同尺寸的不同图像,请尝试为其提供多个 png 图像,看看会发生什么。

关于image - JavaFX 2.2 图像支持 .ico?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28474791/

相关文章:

image - 从 Lua 中的 ICO 文件中读取 16x16 图像的 AND 掩码

c++ - 像素数据在内存中的布局?

Javascript 如何在悬停到图像时显示消息

c++ - 如何为 OpenCV 多核图像处理创建 TBB 任务调度程序? C++

javafx-2 - JavaFX 中的 Line3D

java - 在 JavaFX 中切换组件的颜色

java - 更新折线图中的值

vbscript - 是否可以在 vbscript 中存储 .ico 文件?

html - 为什么此代码无法在网页标题栏上获取图标图像

html - 前景中的图像边框