在运行时加载TImagelist时失去透明度

时间:2019-01-26 16:14:56

标签: delphi

在运行时加载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,希望可能会更好,但问题仍然存在。

0 个答案:

没有答案