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;

相关阅读 >>

Delphi dbnavigator1 模拟点击

Delphi adoconnection断线重连

Delphi 判断系统服务是否运行

Delphi 删除字符串中首个字符

Delphi 如何获得其他进程的token

Delphi 获取打开的记事本中的内容

Delphi从网上获取北京时间

Delphi隐藏当前进程(新)

Delphi 官方使用并行编程库介绍

Delphi winapi: setwindowtext - 设置窗口标题

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...