gpt4 book ai didi

java - OSX 上带有 SWT 的透明系统托盘图标

转载 作者:行者123 更新时间:2023-12-01 12:26:40 33 4
gpt4 key购买 nike

我对此感到非常困惑,我不知道这是否是一个错误。

在我的 SWT 应用程序中,我正在创建一个系统托盘图标。它显示得很好,但透明度被忽略了。该图标存储为 PNG 格式,在 OSX 上的预览中查看它会显示透明度存在,但是当它出现在托盘上时,它具有白色背景。

图标有 2 种颜色,#00000 表示背景,并在其上设置 alpha,然后 #010101 表示实际图标。

以下是图标示例:From file

它在栏上的显示方式如下:In use

我有其他带有实际颜色的图标,它们可以正常工作,并且具有适当的透明度,所以我不禁想知道,这是某种渲染错误还是 Mac 处理系统托盘图标的方式有些奇怪?

更新: channel 和图层:/image/c9TH5.png

更新2:

抓一下

最佳答案

我明白了,这有点像手掌的时刻。

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

这里有一些代码来显示发生了什么。

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 没有。

关于java - OSX 上带有 SWT 的透明系统托盘图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276795/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com