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

All*_*ain 8 delphi alpha blur tray

我最近在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;
Run Code Online (Sandbox Code Playgroud)

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

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

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

搞砸了图标

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

搞砸了图标2

Dav*_*nan 8

您声明您没有分配图标.在哪种情况下组件使用Application.Icon.但这通常是一个通知区域大小错误的图标.

对于通知区域,您需要使用尺寸由SM_CXSMICON系统指标确定的方形图标.获得它的最好方法是调用LoadImage哪个允许您指定图标大小.一旦你将图标加载到一个HICON你可以写这个:

AppTrayIcon.Icon.Handle := IconHandle;
Run Code Online (Sandbox Code Playgroud)


Ken*_*ite 6

您的图标没有合适的尺寸或颜色深度.

您可以使用图标编辑器为单个.ico文件提供多个大小和颜色深度图标,Windows将根据用户的设置和视频驱动程序配置自动选择合适的图标.然后,在选择最接近的匹配时,Windows将有多种选择,缩放和混合将具有更好的外观.

我使用GreenFish Icon Editor,这是捐赠用品.它将允许您打开任何支持的图形类型,然后自动创建具有多种颜色深度和分辨率的Windows图标(请参阅Icon菜单).我在Delphi 7,2007年,2010年,XE,以及XE3测试的多图像图标文件,它们做工精细的Application.IconTForm.Icon.

另请参阅托盘中显示的最佳图标大小