通过ExtractIcon获得了一个32*32的图标,怎么转换成16*16的?(100分)

  • 主题发起人 主题发起人 santgan
  • 开始时间 开始时间
S

santgan

Unregistered / Unconfirmed
GUEST, unregistred user!
用Timagelist 把它们逐个加进去,
width=16 heigh=16
然后再导出来
 
在Delphi里需要插入图标的都有转换的按钮啊,我知道如图形按钮
如果不行,可以借用其他的画图程序,比如制作icon的工具等
 
放一个ImageList,把它们加进来,提示你要不要分成4半,
当然不分了,然后再导出去,就变成16*16的了.
转成Bmp当然可以.
 
使用ImageList的方法太低效了一点,不希望使用这种方法。
TIcon能够转换成为TBitmap吗?
 
要获得精确的16x16的Icon而不是用32x32转换来的,你得用ExtractIconEx,
一个完整可用的函数如下:
function GetFileIcon(const aFileName: string; Index: integer; var li,si: TIcon): boolean;
var
l,s: HICON;
begin
Result:=ExtractIconEx(PChar(aFileName),Index,l,s,1)>0;
if Result then
begin
if li=nil then li:=TIcon.Create;
li.Handle:=l;
if si=nil then si:=TIcon.Create;
si.Handle:=s;
end;
end;

其中变参li为大图标(32x32) LargeIcon,si为小图标(16x16)SmallIcon
 
多人接受答案了。
 
后退
顶部