还是请园子里的兄弟门帮个忙,哪里有ico->bmp的工具下载 http://newhua.infosail.com/ty_icon.htm 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己写一个就是了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; ICO和BMP是一样的,只是文件头某个字节一个是00,一个是01。 你用Delphi里面的imagelist打开一个.ico,然后export就可以存为一个.bmp了! delphi自带的那个图像编辑器就可以,不过如果是批量转换的话,还是自己写一个把 实在是很意外,才兄用的是delphi啊! to sundayboys:本人比较愚吨,所以…………呵呵! 经过老柴提示,已经作乐一个批量转化的。呵呵。已经转了几千个ICON.最后一点小问题就是:大部分icon是32*32的,怎么把它带的那个小16*16的画出来呢?我用drawIconEx,效果不是很理想。既然如此,给分的时候转到技术版。 已经和delphi相关了,转到delphi版 Icon Snatcher 3.6.1可自定义32*32,16*16图素格式 我已经决定不使用下载的工具,因为老柴给的法子确实好用。经过老柴提示,已经作乐一个批量转化的。呵呵。已经转了几千个ICON.最后一点小问题就是:大部分icon是32*32的,怎么把它带的那个小16*16的画出来呢?我用drawIconEx,效果不是很理想。 ico->bmp(1)方法1var 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)方法2procedure 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(Application.ExeName)+ 'myfile.bmp');end;procedure TForm1.FormCreate(Sender: TObject); begin image1.picture.icon.loadfromfile('c:\myicon.ico'); end;//////////////////////////////////////////////////////////////////bmp->icoif(hBit == NULL) // hBit is BitMap Handlereturn NULL;CBitmap oBitmap;oBitmap.Attach(hBit);CBitmap oBMap;BITMAP rBitMap;oBitmap.GetBitmap( &rBitMap );oBMap.CreateBitmapIndirect( &rBitMap );BYTE a[4096];DWORD len = oBitmap.GetBitmapBits (4096,a);for (UINT i=0; i<len; i++){a[i] ^= a[i];}oBMap.SetBitmapBits( len, a);HICON hIcon;if (bTheBigIcon){CImageList oImagelist;oImagelist.Create(32, 32, TRUE, 1, 1);oImagelist.Add(&oBitmap, &oBMap);hIcon = oImagelist.ExtractIcon( 0 );oImagelist.DeleteImageList();}else{CImageList oImagelist;oImagelist.Create(16, 16, TRUE, 1, 1);oImagelist.Add(&oBitmap, &oBMap);hIcon = oImagelist.ExtractIcon( 0 );oImagelist.DeleteImageList();}m_bIcon = false;return hIcon;//资源来自网上,xixi~~ 巨简单的问题,可我不会:代码块的缩进(即选中一段代码,整体左移或右移)用什么快捷键? 结束进程时 如何使托盘图标消失? webbrowser 中如何监视鼠标的拖放? 怎样对一个form中所有的控件进行操作 定时器与循环的问题 你觉得女孩的年龄在哪有个坎? 我真的想跳楼!!! rxlib2.75 for d7 控件安装不上 ACCESS存储图片的问题,高手指点! 在QuickReport中打印的问题! 我的问题高手帮不上忙,太初级 简单才是最美
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;
大部分icon是32*32的,怎么把它带的那个小16*16的画出来呢?
我用drawIconEx,效果不是很理想。
既然如此,给分的时候转到技术版。
可自定义32*32,16*16图素格式
经过老柴提示,已经作乐一个批量转化的。呵呵。已经转了几千个ICON.最后一点小问题就是:
大部分icon是32*32的,怎么把它带的那个小16*16的画出来呢?
我用drawIconEx,效果不是很理想。
(1)方法1
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;//////////////////////////////////////////////////////////////////
bmp->ico
if(hBit == NULL) // hBit is BitMap Handle
return NULL;CBitmap oBitmap;
oBitmap.Attach(hBit);CBitmap oBMap;
BITMAP rBitMap;
oBitmap.GetBitmap( &rBitMap );
oBMap.CreateBitmapIndirect( &rBitMap );
BYTE a[4096];
DWORD len = oBitmap.GetBitmapBits (4096,a);
for (UINT i=0; i<len; i++)
{
a[i] ^= a[i];
}
oBMap.SetBitmapBits( len, a);HICON hIcon;
if (bTheBigIcon)
{
CImageList oImagelist;
oImagelist.Create(32, 32, TRUE, 1, 1);
oImagelist.Add(&oBitmap, &oBMap);hIcon = oImagelist.ExtractIcon( 0 );
oImagelist.DeleteImageList();
}
else
{
CImageList oImagelist;
oImagelist.Create(16, 16, TRUE, 1, 1);
oImagelist.Add(&oBitmap, &oBMap);hIcon = oImagelist.ExtractIcon( 0 );
oImagelist.DeleteImageList();
}
m_bIcon = false;
return hIcon;//资源来自网上,xixi~~