Java SWT:获取不同大小的系统图标

Java SWT:获取不同大小的系统图标,java,swt,Java,Swt,一些系统图标有不同大小的选择(大概像.ico或.icns文件)。在SWT中,我能够获取某些状态的默认图标,如图标信息或图标警告等 我想得到一个使用不同大小的图标版本。例如,当我使用下面的代码获取图标信息时,图标的大小是32x32 Label icon = new Label(parent, SWT.NONE); icon.setImage(Display.getCurrent().getSystemImage(SWT.ICON_INFORMATION)); 在彩色背景上(与INHERIT\u

一些系统图标有不同大小的选择(大概像.ico或.icns文件)。在SWT中,我能够获取某些状态的默认图标,如
图标信息
图标警告

我想得到一个使用不同大小的图标版本。例如,当我使用下面的代码获取图标信息时,图标的大小是32x32

Label icon = new Label(parent, SWT.NONE);
icon.setImage(Display.getCurrent().getSystemImage(SWT.ICON_INFORMATION));
在彩色背景上(与
INHERIT\u FORCE
合成以避免白色边框),此图标看起来是这样的(在Windows 7系统上):

假设我想要这个图标的16x16版本。我发现,提取图像数据并自行调整其大小会使图标的质量低于系统上其他地方使用的图标

如果将图标大小调整为16x16,则质量如下所示:

我追求的质量的一个例子是本机Windows功能中的16x16图标:


显然,在本例中Windows本机使用的版本看起来更好。有什么办法可以把它拿来吗?还是我坚持调整尺寸的最佳方法是我唯一能找到的?是否可以将系统图标作为大小不同的
Image
数组?

注意-使用
GC.drawImage
setAntialias(SWT.ON)
setInterpolation(SWT.HIGH)缩放图像
ImageData.scaledTo
在某些平台上做得好得多。图标实际上是使用
GC.drawImage
在使用从
ImageData.scaledTo
复制的数据创建的
图像
上绘制的,以保持透明度。它与自定义图标配合使用效果非常好,但附带说明:由于某些原因,此系统图标的透明度失败(在示例中几乎看不到)。