把图标文件转换为位图文件

      图标和位图是WINDOWS中常见的两种图形资源,在开发应用程序时,充分地运用这些资源可以极大地改进程序的界面,增强软件的实现效果。例如在DELPHI中,我们可以给应用指定一个图标,给位图命令按钮或加速按钮指定一个位图等。许多开发工具都提供有大量的图形资源,包括位图、图标、光标、视频文件等,比如在DELPHI、Visual Basic 5.0中就提供有大量的位图和图标,但并不是所有图标都有相应的位图文件,有时我们有使用位图文件时,会觉得某个图标的图形更合适,但却没有相应的位图文件可以使用,例如DELPHI中的位图按钮,其Glyph属性用于指定显示在按钮中的位图,但该属性只能使用位图文件(.bmp),而不能使用图标文件(.ico),在这种情况下,我们就需要把图标文件转换为位图文件。

      利用DELPHI来实现这样的转换是非常方便的,DELPHI把Windows的位图及其调色板封装在Tbitmap类中,把Windows图标封装在Ticon 中,我们只需把Tbitmap 和Ticon的属性和方法作些简单应用,就可以实现图标文件到位图文件的转换。

      下面的小程序可实现图标文件到位图文件的转换,它能够把所给定的图标文件转换为同名的位图文件,程序中只是简单地通过程序扩展名来判断图标文件和位图文件。

      各部件及其主要属性设置如下:

部件属性属性值
Form1 Name ‘Form1’
Caption ‘ICO= >BMP’
StaticText1 Name ‘StaticText1’
Caption ‘ 图 标 文 件:’
Edit1 Name ‘Edit1’
Text ‘’
BitBtn_Browse Name ‘BitBtn_Browse’
Caption ‘ 浏 览...’
BitBtn_Convert Name ‘BitBtn_Convert’
Caption ‘ 转 换’
OpenDialog1 Name ‘OpenDialog1’
Filter ‘ 图 标 文 件(*.ico)|*.ico’

      实 现 转 换 的 源 程 序 如 下 所 示:

unit main;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
StaticText1: TStaticText;
BitBtn_Convert: TBitBtn;
OpenDialog1: TOpenDialog;
BitBtn_Browse: TBitBtn;
Edit1: TEdit;
procedure BitBtn_BrowseClick(Sender: TObject);
procedure BitBtn_ConvertClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.BitBtn_BrowseClick(Sender: TObject);
begin
if opendialog1.Execute then
edit1.Text := opendialog1.filename;
end;
procedure TForm1.BitBtn_ConvertClick(Sender: TObject);
var
Icon1:Ticon;
Bitmap1:Tbitmap;
FileName,FileExt:String;
begin
if FileExists(Edit1.Text) then
begin
FileExt:= ExtractFileExt(Edit1.Text);
if UpperCase(FileExt)=`.ICO` then
begin
FileName:=copy(edit1.text,0,pos(`.ico`,edit1.text)-1);
icon1:=ticon.create;
bitmap1:=tbitmap.create;
icon1.loadfromfile(edit1.text);
Bitmap1.Width := Icon1.Width;
Bitmap1.Height := Icon1.Height;
Bitmap1.Canvas.Draw(0, 0, Icon1 );
Bitmap1.SaveToFile(FileName+`.bmp`);
Icon1.Free;
Bitmap1.Free;
ShowMessage(`文件转换成功!`);
end
else
ShowMessage(`所给定的文件不是图标文件!`);
end
else
ShowMessage(`所给文件不存在!`);

end;
end.

转载于:https://www.cnblogs.com/myamanda/articles/1545359.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值