我想要将标准的 Windows 信息(以及警告和错误)图标绘制到 pagecontrol 选项卡的索引上。但是,如果 Windows 背景颜色不是白色,则结果看起来很糟糕。
program Project111;
uses
Vcl.Forms,
Vcl.Controls,
Vcl.Graphics,
Winapi.Windows,
Vcl.ComCtrls,
Vcl.ImgList;
{$R *.res}
var
mainForm: TForm;
imageList: TImageList;
icon: TIcon;
pageControl: TPageControl;
tabSheet: TTabSheet;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm, mainForm);
imageList := TImageList.Create(mainForm);
imageList.ColorDepth := cd32bit;
icon := TIcon.Create;
try
icon.Handle := LoadImage( 0, IDI_INFORMATION, IMAGE_ICON, 16, 16, {LR_DEFAULTSIZE or} LR_SHARED );
imageList.AddIcon(icon);
finally
icon.Free;
end;
pageControl := TPageControl.Create(mainForm);
pageControl.Parent := mainForm;
pageControl.Images := imageList;
tabSheet := TTabSheet.Create(mainForm);
tabSheet.Parent := pageControl;
tabSheet.PageControl := pageControl;
tabSheet.ImageIndex := 0;
Application.Run;
end.
正如你所看到的白色边框是模糊的,我猜这是因为 TImageList 缺乏适当的 alpha 透明度,但我不知道如何解决这个问题。
该解决方案不必使用 TImageList,我很乐意使用任何其他方法。请注意,还会有标题,并非所有索引都有图标,并且图标可能会随着上下文的变化而更改/添加/删除。
我正在使用 Delphi XE-2,如果有帮助的话,我也有 DevExpress 组件。