我知道他们有很多论坛都在谈论这个,但我的问题是我有一个带有图标的 JLabel,当分辨率为 <> 100% 时我不想缩放它! IE。 (抱歉,法语):
最初,我将 JLabel 图标设置为:
lblImage.setIcon( getNoteIcon() );
//...
ImageIcon getNoteIcon(){
return new ImageIcon( getClass().getResource('path/to/file.png') );
}
这个结果是当 HiDPI 分辨率设置为高于 100% 时,我的图像显示模糊。例子:
100%:
在 150% 时:
你可以看到音符图像在 150% 分辨率下更加模糊。
我想要什么:我不希望它放大或缩小图像!我想保持原始尺寸,除非我可以为各种分辨率提供不同的图像尺寸。
话虽如此,我查看并尝试使用 BaseMultiResolutionImage 类来处理分辨率,传递“相同大小图像”的数组,但是当我更改分辨率时得到相同的结果。这是我试过的代码:
ImageIcon getNoteIcon(){
List<Image> imgList = new ArrayList<Image>();
/* all images are width = 108 height = 83 */
imgList.add(ImageIO.read(new File('path/to/file.png'))); // 100%
imgList.add(ImageIO.read(new File('path/to/file.png'))); // 125%
imgList.add(ImageIO.read(new File('path/to/file.png'))); // 150%
imgList.add(ImageIO.read(new File('path/to/file.png'))); // 175%
imgList.add(ImageIO.read(new File('path/to/file.png'))); // 200%
BaseMultiResolutionImage multiResolutionImage = new BaseMultiResolutionImage(imgList.toArray(new Image[0]));
return new ImageIcon(
multiResolutionImage
);
}
我不明白我做错了什么,或者我什至没有正确使用 BaseMultiResolutionImage
。最后,如果我确实设法为 3 种分辨率提供 3 种不同的图像(即 100、125、150%),有没有办法告诉它在我没有给定图像时使用的“默认”图像分辨率(即 200%)?
任何人都可以阐明这一切吗?似乎我很困惑,只是为了让图像不在我的窗口中缩放......
非常感谢! 帕特