PngComponents:如何将PNG文件添加到TPngImageList

时间:2013-06-19 13:12:21

标签: delphi delphi-7

我正在尝试将PNG文件添加到TPngImageList(Dng的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;

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

2 个答案:

答案 0 :(得分:2)

未经测试,但不应该只是简单的工作吗?

ImageList.PngImages.Add.PngImage.LoadFromFile(fn);

答案 1 :(得分:0)

使用PngImageList的其他方法解决。 Prop 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;