当在JavaFX中设置png图像作为舞台图标时(使用Kotlin,但这也是Java中的问题),图标似乎会变形。
我已经搜索了这个问题,并找到了以下内容:
- 这是一个(可能仍然存在的)bug。在这个issue page上,他们解释说一个解决方法是避免使用半透明像素。我尝试了这个方法,但我的图片仍然变形,如下所示。
我已经搜索了这个问题,并找到了以下内容:
- 这是一个(可能仍然存在的)bug。在这个issue page上,他们解释说一个解决方法是避免使用半透明像素。我尝试了这个方法,但我的图片仍然变形,如下所示。
左侧。 原始的32x32图像提供给JavaFx。右侧。 JavaFx放置在任务栏中的图像。
左边。提供给JavaFx的原始48x48图像。右边。JavaFx在任务栏中放置的图像。
看起来32x32的图片必须被放大,而48x48的图片必须缩小到约42x42(我也制作了一个42x42但也没有帮助)。既然Windows想要的尺寸是2的幂或48x48,那么你可以说这些尺寸会起作用。
- 我发现this 关于此主题的旧问题。在此讨论JavaFX不会自动选择最佳图标大小,而通常选择添加到图标集的最后一个图标,因此建议将您认为最适合的图标放在最后一个位置。
我知道这可能是JavaFX中未解决的错误,并且其他问题已经有大约三年没有更新了,所以我想知道是否有人在此期间找到了更好的解决方法。
我已经用Kotlin创建了一个类似于问题页面提供的MWE,您可以轻松地将原始图像与最终出现在任务栏中的图像进行比较。使用的图像如下:
- icon48.png:
- icon32.png:
MWE
class Main : Application() {
override fun start(primaryStage: Stage) {
val icon48 = Image("sample/icon48.png")
val icon32 = Image("sample/icon32.png")
primaryStage.scene = Scene(Group(
ImageView(icon48)
ImageView(icon32)
))
primaryStage.icons.addAll(
icon48,
icon32
)
primaryStage.show()
}
}
fun main(args: Array<String>) {
Application.launch(Main::class.java, *args)
}