如何将程序中的ICO图标显示到Tbitbtn 的按钮上的!
可以通过Applicationl.ICON 返回本程序的ICO图标,但是TBitbtn的按钮上的图标必须是*.BMP格式的,是否有一个涵数转换!还是过什么办法呢?
进一步扩展时:是否可以把指定的一个程序*.exe 文件中的图标放到自己做的程序中的一个Tbitbtn按钮上呢?
可以通过Applicationl.ICON 返回本程序的ICO图标,但是TBitbtn的按钮上的图标必须是*.BMP格式的,是否有一个涵数转换!还是过什么办法呢?
进一步扩展时:是否可以把指定的一个程序*.exe 文件中的图标放到自己做的程序中的一个Tbitbtn按钮上呢?
解决方案 »
- TcxTreeList节点
- 一个不知道哪里错了的问题- -!
- 好奇怪的问题,昨天我用delphi写的程序还运行的好好的,今天一开机运行就出现错误了,过了一会儿再运行有一切正常了.请高手指点!
- 小问题请教!~以前做过,但忘了!!!
- delphi 5 ,delphi 6,delphi 7,他们的共同点和不同点在那?
- 关于inputQuery函数,如何用?
- ado+sql server视图刷新出错
- Delphi6.0有没有汉化的帮助文件?
- delphi 如何实现 Activex 的事件?
- 找错:fieldbyname('a').asstring怎样写在sql语句中?
- 请问如何捕捉关机信息,我上次在网吧用API写一个关机的东东,那个网吧管理软件不让我关机
- 插入数据时报错“查询值的数目与目标字段中的数目不同”,求教!
var
Icon : TIcon;
Bitmap : TBitmap;
begin
Icon := TIcon.Create;
Bitmap := TBitmap.Create;
Icon.LoadFromFile('c:\picture.ico'); //Load an ICO
from File
Bitmap.Width := Icon.Width;
Bitmap.Height := Icon.Height;
Bitmap.Canvas.Draw(0, 0, Icon );
Bitmap.SaveToFile('c:\picture.bmp'); //Convert ICO to
BMP!
Icon.Free;
Bitmap.Free;
end;(2)方法2
procedure TForm1.ConvertClick(Sender: TObject);
var
winDC, srcdc, destdc : HDC;
oldBitmap : HBitmap;
iinfo : TICONINFO;
begin
GetIconInfo(Image1.Picture.Icon.Handle, iinfo);
WinDC := getDC(handle);
srcDC := CreateCompatibleDC(WinDC);
destDC := CreateCompatibleDC(WinDC);
oldBitmap := SelectObject(destDC, iinfo.hbmColor);
oldBitmap := SelectObject(srcDC, iinfo.hbmMask);
BitBlt(destdc, 0, 0,
Image1.picture.icon.width,Image1.picture.icon.height,srcdc,
0, 0, SRCPAINT);
Image2.picture.bitmap.handle := SelectObject(destDC,
oldBitmap);
DeleteDC(destDC);
DeleteDC(srcDC);
DeleteDC(WinDC);
image2.Picture.Bitmap.savetofile(ExtractFilePath(Applicat
ion.ExeName)+ 'myfile.bmp');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
image1.picture.icon.loadfromfile('c:\myicon.ico');
end;
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, Buttons;type
Ticon2bmo = class(TForm)
Image1: TImage;
Button1: TButton;
Edit1: TEdit;
SpeedButton1: TSpeedButton;
OpenDialog1: TOpenDialog;
CheckBox1: TCheckBox;
procedure Button1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
procedure drawimage;
end;var
icon2bmo: Ticon2bmo;implementation{$R *.DFM}procedure Ticon2bmo.Button1Click(Sender: TObject);
var s : string;
begin
IF LENGTH(edit1.text) = 0 THEN EXIT;
s:= copy(edit1.text,1,pos('.ICO',edit1.text)) + 'BMP';
IF FILEEXISTS(S) THEN
BEGIN
IF MESSAGEBOX(HANDLE,'FILE EXIST, OVERWRITE?','SAVE TO BITMAP', MB_OKCANCEL +MB_ICONQUESTION) = IDOK tHEN
image1.picture.savetofile(s);
END
ELSE
image1.picture.savetofile(s);
showmessage(Edit1.text + ' Saved to ' + s);
end;procedure Ticon2bmo.drawimage;
var t: Ticon;
re : trect;
begin
image1.canvas.brush.style := bsSolid;
image1.canvas.fillrect(image1.canvas.cliprect);
edit1.text := opendialog1.filename;
T := ticon.create;
T. loadfromfile(edit1.text);
image1.width := t.width;
Image1.height := t.height;
Image1.canvas.draw(0,0,t);
if CheckBox1.checked then
begin
re :=rect(0,0,image1.width,image1.height);
frame3d(image1.Canvas,re,clBtnHighlight,clBtnShadow,2);
end;
T.free;
end;procedure Ticon2bmo.SpeedButton1Click(Sender: TObject);
begin
if opendialog1.execute then
drawimage;
end;procedure Ticon2bmo.CheckBox1Click(Sender: TObject);
begin
if length(edit1.text) > 0 then
drawimage;
end;end.
昨天我在DELPHI 的帮助中也找到了 bewill(海咪咪) 的方法一,通过此方法已能解决我的问题,就是第二个问题:
就是如何把一个.EXE 文件的程序的图标(ICON) 显示到我的程序中!打开的.exe 文件可以通过Opendialog 来打开,但是我如何返回它的ICON 呢?!谢谢!