我正在尝试设置Java AWT应用程序的图标,以便在Windows 10任务栏上以本地分辨率呈现(即使桌面缩放设置高于100%时也是如此)。默认情况下,如果可执行文件嵌入包含多个大小的图标,则似乎Windows会选择一个比任务栏图标实际大小更大的大小并将其缩小(在100%缩放时,它将32像素图标调整为24个像素,即使提供了24像素图标,对于其他比例也是如此)。
我已通过仅加载正确大小的图标作为资源并向窗口发送WM_SETICON消息来解决了C ++ MFC应用程序的此问题,这将在任务栏和alt-tab对话框中产生清晰的图标。
我已通过仅加载正确大小的图标作为资源并向窗口发送WM_SETICON消息来解决了C ++ MFC应用程序的此问题,这将在任务栏和alt-tab对话框中产生清晰的图标。
smallIcon = (HICON)LoadImage( myInstance, MAKEINTRESOURCE(smallIconRes), IMAGE_ICON, smallIconSize, smallIconSize, LR_DEFAULTCOLOR );
SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)smallIcon);
bigIcon = (HICON)LoadImage( myInstance, MAKEINTRESOURCE(bigIconRes), IMAGE_ICON, bigIconSize, bigIconSize, LR_DEFAULTCOLOR );
SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM)bigIcon);
这种方法似乎不适用于Java应用程序——将wParam设置为ICON_SMALL的WM_SETICON消息可正常工作,但是相应的ICON_BIG则会被忽略。
如果我尝试使用Java的API来设置图标,可以通过以下方式实现:
List<Image> icons = new ArrayList<Image>();
icons.add(windowIcons.getIcon(20)); // small icons are 20x20 pixels
icons.add(windowIcons.getIcon(30)); // large are 30x30 at 125% scale
setIconImages(icons);
使用了正确的图标,但它看起来模糊,好像有些东西将其调整为“预期”大小,然后再次调整回来。左侧是它的外观,右侧是图标文件的内容。
那么,我的问题是:在这个Java应用程序中,我可以做些什么来让Windows在任务栏上呈现我提供的图标而不需要缩放和模糊细节?