任务栏中舞台的图标质量低劣。JavaFX。

9
为什么舞台图标的质量很低?原始图片要好得多。如何解决?
我使用了这段代码将图片设置为舞台图标:
stage.getIcons().add(new Image("/res/app_icon.png"));

截图:
截图

原始图标:
原始图标


在操作系统要求之前将图标缩小。 - MadProgrammer
抱歉,我还没有完全理解你的意思。 - Nazariy Demyanovskyi
你的图标大小为300x300,任务栏图标大小可能为32x32。你需要创建一个32x32版本的图标,这样它就可以按照你想要的方式显示,而不会被JavaFX或操作系统通过你无法控制的机制缩放。 - MadProgrammer
1个回答

9

更新

不幸的是,JavaFX 8中图标选择器的实现并不总是从可用图标列表中选择最佳应用程序图标大小。

请参见:

这些问题(目前)计划在Java 9中解决。

关于这些问题的一些评论如下:

事实上,Glass目前仅支持为窗口分配一个图标,它不允许为一组不同大小的图标分配一个图标。该功能需要在Glass中实现。

--

我注意到当设置多个图标时,只有getIcons()返回列表中的最后一个图标被使用。即使其他具有更好分辨率的图标也在列表中也无关紧要。
如果您提供了不同尺寸的图标列表,请将您期望使用的尺寸放在列表的最后(可以按从小到大的顺序排列列表,或将48x48的图标放在列表的最后或仅作为列表中的唯一元素)。遗憾的是,我没有访问Windows机器来测试该平台的最佳图标大小。
图标指南(但请注意上面更新的信息):
  • 提供一组不同尺寸的高质量图标,以返回自 stage.getIcons()的列表。
  • 运行时将选择最佳适配尺寸。
  • 使用标准的图标尺寸,大多数操作系统可以在不进行进一步缩放的情况下使用(例如条目尺寸是2的幂或48x48)。
  • 使用高质量的源图像(您问题中的原始源图像对我来说有些模糊)。
  • 对于非常小的图标,有时直接将较大的图标比例缩小到更小的大小并不是最佳选择。有时候,最好让图标设计师清理和删除小图标中的复杂细节,这可能在较大的图标中是可以的 - 参见 Pushing Pixels上有关图标大小的讨论,以帮助理解原因。
  • 此图标手册中提供了有关何种操作系统使用哪些图标尺寸的信息。

stage.getIcons().addAll(
    new Image("/res/app_icon64x64.png"),
    new Image("/res/app_icon32x32.png"),
    new Image("/res/app_icon16x16.png")
);

一个高质量图标的良好来源是http://www.iconarchive.com,例如this refresh icon


在Windows中,当我右键单击时,它们不会停留在任务栏上,“固定到任务栏”是默认行为吗?如何修复它? - Martin Pfeffer
马丁,那是一个不同的问题。请作为一个新问题提出。 - jewelsea
1
链接问题的新URL:https://bugs.openjdk.java.net/browse/JDK-8091186 https://bugs.openjdk.java.net/browse/JDK-8087459 - Natix
谢谢Natix,我编辑了答案并指向了新的问题跟踪器URL。 - jewelsea
1
@horvoje 是的,在应用程序中设置舞台上的图标不再在最近的JavaFX和Windows版本的任务栏中显示该图标。要显示您的图标,您需要创建一个安装程序(使用jpackage并通过命令行开关将图标设置为jpackage工具),然后安装该应用程序。不幸的是,这并不完全简单。 - jewelsea
显示剩余3条评论

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