在运行时加载TImageList时,我无法保留透明度
这是我用来加载TImageList和TImage的代码。
function LoadIconFromFile(FileName: string; Var ImageList: TImageList): Integer; overload;
var Icon: TIcon;
SHInfo: TSHFileInfo;
Bmp: TBitMap;
begin
Icon := TIcon.Create;
SHGetFileInfo(PChar(FileName), 0, SHInfo, SizeOf(SHInfo), SHGFI_ICON OR SHIL_LARGE);
Icon.Handle := SHInfo.hIcon;
Result := ImageList.AddIcon(Icon);
Icon.Free;
end;
procedure LoadIconFromFile(FileName: string; Var Image: TImage); overload;
var Icon: TIcon;
SHInfo: TSHFileInfo;
begin
Icon := TIcon.Create;
SHGetFileInfo(PChar(FileName), 0, SHInfo, SizeOf(SHInfo), SHGFI_ICON OR SHIL_LARGE);
Icon.Handle := SHInfo.hIcon;
Image.Picture.Icon := Icon;
Icon.Free;
end;
当我使用TImageList调用LoadIconFromFile时,我失去了透明度。 当我使用TImage调用LoadIconFromFile时,将保留透明度。 在设计时加载相同的Icon时,会保留透明性。
任何人都可以帮忙,我浏览过类似的帖子,但是除了这是Delphi的问题之外,我找不到其他明显的解决方案。我已移至Delphi 10.3,希望可能会更好,但问题仍然存在。