繁体   English   中英

带有SWT的OSX上的透明系统任务栏图标

[英]Transparent System Tray Icon on OSX with SWT

我对此感到非常困惑,无法分辨它是否是错误。

在我的SWT应用中,我正在创建系统任务栏图标。 它显示得很好,但是透明度被忽略了。 该图标存储为PNG,在OSX上的“预览”中查看该图标可看到透明效果,但是当它出现在托盘上时,背景为白色。

图标是2种颜色,背景设置为#00000,并在其上设置Alpha,然后实际图标设置为#010101。

这是图标的示例: 从文件

它在栏上的显示方式如下: 正在使用

我还有其他带有实际颜色的图标可以工作并且具有适当的透明度,所以我不禁怀疑,这是某种渲染错误还是Mac处理系统任务栏图标的方式有些奇怪?

更新:频道和图层: http : //i.imgur.com/YZNUnXt.png

更新2:

划伤

我想通了,那是掌心的瞬间。

所有徽标都是从我制作的加载程序类加载的。 有一种方法可以指定徽标的大小,然后按比例缩小。 我最初是在缩放徽标,但是在创建新徽标后,不需要缩放徽标,但是我忘了更新该方法调用。

这是一些代码来说明发生了什么。

public static Image getLogo(LogoType type, Display display, int width, int height) {
    ClassLoader loader = AppLogo.class.getClassLoader();
    InputStream stream = loader.getResourceAsStream(type.getFileName());
    Image img; 

    if(width > 0 && height > 0) {
        Image orig = new Image(display, stream);
        img = new Image(display, width, height);
        GC gc = new GC(img);
        gc.drawImage(orig, 0, 0, orig.getBounds().width, orig.getBounds().height, 0, 0, width, height);
        gc.dispose();
        orig.dispose();
    }
    else {
        img = new Image(display, stream);
    }

    return img;     
}

似乎使用GC缩放图像会导致Alpha值被忽略。 我还尝试在ImageData上设置透明色,但这仍然行不通。 我已经看到了一些示例,其中人们使用一种算法进行扩展,在这种情况下,他们实际上可以设置像素并且它可以工作。 但是drawImage没有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM