2

我正在尝试将 PNG 文件添加到 TPngImageList (D7 的 PngComponents 来自http://code.google.com/p/cubicexplorer/downloads/list)。

type
  TImgListCrack = class(TPngImageList);

function LoadPngIconEx(ImageList: TPngImageList; const fn: string): boolean;
var
  Icon: HICON;
  AImage: TPngObject;
begin
  with ImageList do
  begin
    BeginUpdate;
    try
      AImage:= TPngObject.Create;
      AImage.LoadFromFile(fn);
      Icon:= TImgListCrack(ImageList).PngToIcon(AImage);
      ImageList_AddIcon(Handle, Icon);
      DestroyIcon(Icon);
      FreeAndNil(AImage);
      Result:= true;
    finally
      EndUpdate;
    end;
  end;
end;

结果:未添加图标,图像列表仍为空。怎么做才好?

4

2 回答 2

2

未经测试,但不应该简单地工作吗?

ImageList.PngImages.Add.PngImage.LoadFromFile(fn);
于 2013-06-19T13:30:57.233 回答
0

使用PngImageList的其他方法解决。道具 PngImages 有需要的功能。

function LoadPngIconEx(ImageList: TPngImageList; const fn: string): boolean;
var
  AImage: TPngObject;
begin
  if not FileExists(fn) then
    Result:= false
  else
  begin
    AImage:= TPngObject.Create;
    try
      AImage.LoadFromFile(fn);
      ImageList.PngImages.Add.PngImage:= AImage;
      Result:= true;
    finally
      FreeAndNil(AImage);
    end;
  end;
end;
于 2013-06-19T13:55:24.977 回答