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

前端之家收集整理的这篇文章主要介绍了delphi – 为什么我的图标在带有TTrayIcon的托盘栏上很难看?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近在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此图标包括以下尺寸:64×64,48×48,32×32,24×24和16×16.

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

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

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

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

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

AppTrayIcon.Icon.Handle := IconHandle;

猜你在找的Delphi相关文章