gpt4 book ai didi

delphi - 为什么我的图标在带有 TTrayIcon 的托盘栏上很难看?

转载 作者:行者123 更新时间:2023-12-03 14:46:25 25 4
gpt4 key购买 nike

我最近在 Delphi 2007 中发现了 TTrayIcon 组件。使用的代码非常简单。

procedure TForm1.FormCreate(Sender: TObject);
begin
AppTrayIcon := TTrayIcon.Create(nil);
AppTrayIcon.OnDblClick := OnAppTrayIconDblClick;
Application.OnMinimize := OnApplicationMinimize;
Application.OnRestore := OnApplicationRestore;
end;

procedure TForm1.OnApplicationRestore(Sender: TObject);
begin
AppTrayIcon.Visible := False;
ShowWindow(Application.Handle, SW_SHOW);
Application.BringToFront;
end;

procedure TForm1.OnApplicationMinimize(Sender: TObject);
begin
AppTrayIcon.Visible := True;
ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.OnAppTrayIconDblClick(Sender: TObject);
begin
Application.Restore;
end;

由于没有分配图标,Delphi 使用 Application.Icon,即该图标:http://artbyloveland.com/icon.ico此图标包括以下尺寸:64x64、48x48、32x32、24x24 和 16x16。

现在,在我的 Windows Vista 上,一切都很好。

在像 Windows Server 2003 这样的非主题 Windows 上,结果完全搞砸了:

Screwed-up icon

编辑:起初,我以为是阿尔法 channel 的原因。所以我尝试制作一个不使用 alpha channel 的 ico 文件版本。我还按照 Ken 的建议尝试了 GreenFish Icon Editor;我选择了每种颜色深度和每种可用尺寸。在这两种情况下,最终结果都更好。但是,有一个黑色笔划在 ico 文件中根本不存在。

Screwed-up icon 2

最佳答案

您声明您没有分配图标。在这种情况下,组件使用 Application.Icon。但这通常是一个与通知区域尺寸不合适的图标。

对于通知区域,您需要使用方形图标,其大小由 SM_CXSMICON 系统指标确定。获得此效果的最佳方法是调用 LoadImage,它允许您指定图标大小。将图标加载到 HICON 后,您可以编写以下内容:

AppTrayIcon.Icon.Handle := IconHandle;

关于delphi - 为什么我的图标在带有 TTrayIcon 的托盘栏上很难看?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13606477/

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