Delphi 下保存真彩彩图标的方法实例


在D7下存储ico,Bitmap( icon.SaveToFile(); Bitmap.SaveToFile();) 等图片时,保存的结果都是非真彩图片。
这使得图片质量大大下降,而若要保存为真彩图片则需要修改VCl库文件,或是使用第三方VCl,很为麻烦。

经我测试,同样的问题则不会发生在D2007(CodeGear RAD Studio)和Delphi 2010中,既是在D2007中保存ico或bmp等图片时用SaveToFile方法得到的就是真彩图片。我估计D2005以上应该也都可以。

以下是获取图标的两种方法:

一:

uses ShellApi;

procedure getico; //添加移个TEdit用来得知要获取图标文件的地址
var
icon: TIcon ;//定义一个图标类型
begin
icon := TIcon.Create;
try
icon.Handle :=ExtractIcon(application.Handle,pchar(edit1.Text),0);//关键在于此函数,获得图标放到ico变量里
if icon.Handle <> 0 then //成功,赋给应用程序
application.Icon := icon;
icon.SaveToFile('e:\aaa.ico');//保存图标
finally
icon.Free; //释放图标变量
end;
end;


二:

uses ShellApi;

procedure geticon; //添加移个TImage控件用来存放图片,一个TEdit用来得知要获取图标文件的地址
var
sinfo: SHFILEINFO;
a:TBitmap;
begin
ZeroMemory(@sinfo, sizeof(sinfo));
SHGetFileInfo(pchar(Edit1.Text), FILE_ATTRIBUTE_NORMAL,
sinfo, sizeof(sinfo), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON);
Image1.Picture.Icon.Handle := sinfo.hIcon;
Image1.Picture.SaveToFile('E:\aa.ico');// 保存图标
end;


联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678