首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 8扭曲了我的TrayIcon

Windows 8扭曲了我的TrayIcon
EN

Stack Overflow用户
提问于 2013-09-17 20:20:40
回答 2查看 533关注 0票数 10

Windows 8显示托盘图标为20x20像素。似乎Java仍然认为它们应该是16×16像素。这导致了一些严重的扭曲,因为Java缩小了一些东西,然后Windows又将事情放大了。下面的示例使用这三个图像创建三个托盘图标,其外观如下(注意失真):

代码语言:javascript
复制
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));
    }
}

这就是通过添加像素线来放大整件事情的样子(在一个新的选项卡中打开图像将给你一个更清晰的视图):

我的问题:如何防止/ Windows 8扭曲我的图标?

EN

回答 2

Stack Overflow用户

发布于 2014-08-29 20:14:15

16×16大小显然是硬编码到Java TrayIcon实现中的。我看不出有什么办法在运行时改变它。来自WTrayIconPeer.java

代码语言:javascript
复制
final static int TRAY_ICON_WIDTH = 16;
final static int TRAY_ICON_HEIGHT = 16;

这需要是报告为臭虫

作为一个解决办法,使用平滑,反别名的图标将使失真不那么明显.

如果你绝望了,你可以写信(或者找到?)使用JNA或JNI实现托盘图标的替代实现。WTrayIconPeer.java中的代码和awt_TrayIcon.cpp中相应的本机代码可以作为指南。不过,看起来有很多工作要做。

票数 3
EN

Stack Overflow用户

发布于 2014-08-29 18:46:39

这可能只是使用一个图标的问题,这个图标是2-16x16,32x32等等。虽然本机操作系统(在您的例子中,Windows)支持它,但是java只处理任务栏图标和程序图标,只有两个大小的图像。试着将其调整为32x32,然后再试一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18859180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档