//我想在 Delphi 中用 ExtractIcon 函数提取dll中的一个图标,然后保存,但是保存后变成黑白的。过程如下:
procedure TForm1.Button1Click(Sender: TObject);
var hc:HICON; tc:TIcon;
begin //然后取出图标句柄:
ExtractIconEx('Shell32.dll',130,hc,hc,1); //这里也可用ExtractIcon函数
tc:=TIcon.Create;
tc.Handle:=hc; //将句柄hc传给TICON:
tc.SaveToFile('d:\1.ico'); //将图标写入文件
tc.Free;
end;{ 图标提取出来没问题,但得到的文件却是难看的黑白色彩图标 。
经分析,图标提取过程正常(直接画在窗体上没问题,
就是漂亮的真彩色),只是保存了之后色彩就变成黑白的.{ 请问:在Delphi 7中用上述方法提取出图标时,如何将图标保存成文件,
并使其保持真彩色? 我不想再看到那些难看的图标}
procedure TForm1.Button1Click(Sender: TObject);
var hc:HICON; tc:TIcon;
begin //然后取出图标句柄:
ExtractIconEx('Shell32.dll',130,hc,hc,1); //这里也可用ExtractIcon函数
tc:=TIcon.Create;
tc.Handle:=hc; //将句柄hc传给TICON:
tc.SaveToFile('d:\1.ico'); //将图标写入文件
tc.Free;
end;{ 图标提取出来没问题,但得到的文件却是难看的黑白色彩图标 。
经分析,图标提取过程正常(直接画在窗体上没问题,
就是漂亮的真彩色),只是保存了之后色彩就变成黑白的.{ 请问:在Delphi 7中用上述方法提取出图标时,如何将图标保存成文件,
并使其保持真彩色? 我不想再看到那些难看的图标}
procedure WriteIcon(Stream: TStream; Icon: HICON; WriteLength: Boolean);
中的
InternalGetDIBSizes(IconInfo.hbmColor, ColorInfoSize, ColorBitsSize, 16);
和
InternalGetDIB(IconInfo.hbmColor, 0, ColorInfo^, ColorBits^, 16);
更改为
InternalGetDIBSizes(IconInfo.hbmColor, ColorInfoSize, ColorBitsSize, 65536);
和
InternalGetDIB(IconInfo.hbmColor, 0, ColorInfo^, ColorBits^, 65536);