首页  编辑  

在XP下使用XP格式图标

Tags: /超级猛料/Resource.资源和使用/   Date Created:

在XP下使用XP格式的图标

//unit must have Consts and CommCtrl in its uses, and the XP theming (Manifest or the XPMan component for Delphi 7 users)

procedure ConvertTo32BitImageList(const ImageList: TImageList);

const

 Mask: array[Boolean] of Longint = (0, ILC_MASK);

var

 TemporyImageList: TImageList;

begin

 if Assigned(ImageList) then

 begin

   TemporyImageList := TImageList.Create(nil);

   try

     TemporyImageList.Assign(ImageList);

     with ImageList do

     begin

       ImageList.Handle := ImageList_Create(Width, Height, ILC_COLOR32 or Mask[Masked], 0, AllocBy);

     end;

     ImageList.AddImages(TemporyImageList);

   finally

     TemporyImageList.Free;

   end;

 end;

end;

就这段代码了,使用的时候,先清空 ImageList,再 调用本函数,最后添加进去的 XP 格式的图标就会变成 真正的XP格式……

如果ImageList是空的,并且ShareImages=False则只要简单地调用:

ImageList.Handle := ImageList_Create(ImageList.Width, ImageList.Height, ILC_COLOR32 or ILC_MASK, 0, ImageList.AllocBy);

就可以了。