Windows 8 看起来将托盘图标设置为 20 x 20 像素大小。而 Java 仍然认为它们应该是 16 x 16 像素大小。这会导致一些严重的变形,因为 Java 要缩小图像,然后 Windows 再把它们放大回去。下面的示例使用这三个图像创建了三个托盘图标,看起来像这样(请注意畸变):
。
import java.awt.Image;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
public class TrayTest
{
public static void main(String[] args) throws Exception
{
final SystemTray tray = SystemTray.getSystemTray();
TrayIcon trayIcon16 = new TrayIcon(getImage("16pxBlue.png"));
tray.add(trayIcon16);
TrayIcon trayIcon20 = new TrayIcon(getImage("20pxRed.png"));
tray.add(trayIcon20);
TrayIcon trayIcon20autoSize = new TrayIcon(getImage("20pxGreen.png"));
trayIcon20autoSize.setImageAutoSize(true);
tray.add(trayIcon20autoSize);
}
public static Image getImage(String resource)
{
return Toolkit.getDefaultToolkit().createImage(TrayTest.class.getResource(resource));
}
}
这是整个图像在加入像素线后的放大效果(在新标签页打开图片可以获得更清晰的视图):
我的问题: 如何防止Java / Windows 8扭曲我的图标?