社区
C++ Builder
帖子详情
可不可以把BMP转成ICO
xiaohan13916830
2002-05-24 09:16:53
同上,;谢谢指点^_^
...全文
97
11
打赏
收藏
可不可以把BMP转成ICO
同上,;谢谢指点^_^
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaohan13916830
2002-05-29
打赏
举报
回复
谢谢大家!
skyhole
2002-05-28
打赏
举报
回复
用ExTractIconEx() 然后查帮助文件确定参数。
如果没找到API的帮助文件,去BCB的安装盘上把WIN32那个帮助文件弄下来
Billy_Chen28
2002-05-28
打赏
举报
回复
关于ICO转换(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;
guolinchao
2002-05-28
打赏
举报
回复
好象可以用ChangFileExt();
AnsiString __fastcall ChangeFileExt(const AnsiString FileName,const AnsiString Extension);
王集鹄
2002-05-28
打赏
举报
回复
//for Delphi
function BmpToIco(mBitmap: TBitmap; mIcon: TIcon;
mSize32: Boolean = True): Boolean;
var
vIconWidth: Integer;
vIconHeight: Integer;
vBitmapMask: TBitmap;
vBitmapColor: TBitmap;
vIconInfo: TIconInfo;
begin
Result := True;
if mSize32 then begin
vIconWidth := 32;
vIconHeight := 32;
end else begin
vIconWidth := 16;
vIconHeight := 16;
end;
vBitmapMask := TBitmap.Create;
vBitmapColor := TBitmap.Create;
try
vBitmapMask.Width := vIconWidth;
vBitmapMask.Height := vIconHeight;
vBitmapMask.Canvas.Brush.Color := clBlack;
vBitmapMask.Canvas.Rectangle(0, 0, vIconWidth, vIconHeight);
vBitmapColor.Width := vIconWidth;
vBitmapColor.Height := vIconHeight;
StretchBlt(vBitmapColor.Canvas.Handle, 0, 0, vIconWidth, vIconHeight,
mBitmap.Canvas.Handle, 0, 0, mBitmap.Width, mBitmap.Height, SRCCOPY);
vIconInfo.fIcon := True;
vIconInfo.xHotspot := 0;
vIconInfo.yHotspot := 0;
vIconInfo.hbmMask := vBitmapMask.Handle;
vIconInfo.hbmColor := vBitmapColor.Handle;
mIcon.Handle := CreateIconIndirect(vIconInfo);
except
Result := False;
end;
vBitmapMask.Free;
vBitmapColor.Free;
end; { BmpToIco }
//for Borland C++ Builder
bool BmpToIco(Graphics::TBitmap* mBitmap, TIcon* mIcon, bool mSize32 = true)
{
///////begin var
int vIconWidth;
int vIconHeight;
Graphics::TBitmap* vBitmapMask;
Graphics::TBitmap* vBitmapColor;
TIconInfo vIconInfo;
///////end var
if ((mBitmap == NULL) || (mIcon == NULL)) return false;
if (mSize32) {
vIconWidth = 32;
vIconHeight = 32;
} else {
vIconWidth = 16;
vIconHeight = 16;
};
vBitmapMask = new Graphics::TBitmap;
vBitmapColor = new Graphics::TBitmap;
try {
vBitmapMask->Width = vIconWidth;
vBitmapMask->Height = vIconHeight;
vBitmapMask->Canvas->Brush->Color = clBlack;
vBitmapMask->Canvas->Rectangle(0, 0, vIconWidth, vIconHeight);
vBitmapColor->Width = vIconWidth;
vBitmapColor->Height = vIconHeight;
StretchBlt(vBitmapColor->Canvas->Handle, 0, 0, vIconWidth, vIconHeight,
mBitmap->Canvas->Handle, 0, 0, mBitmap->Width, mBitmap->Height, SRCCOPY);
vIconInfo.fIcon = true;
vIconInfo.xHotspot = 0;
vIconInfo.yHotspot = 0;
vIconInfo.hbmMask = vBitmapMask->Handle;
vIconInfo.hbmColor = vBitmapColor->Handle;
mIcon->Handle = CreateIconIndirect(&vIconInfo);
} __finally {
delete vBitmapMask;
delete vBitmapColor;
};
return true;
} /* BmpToIco */
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BmpToIco(Image1->Picture->Bitmap, Image2->Picture->Icon);
}
//---------------------------------------------------------------------------
王集鹄
2002-05-28
打赏
举报
回复
//for Delphi
function BmpToIco(mBitmap: TBitmap; mIcon: TIcon;
mSize32: Boolean = True): Boolean;
var
vIconWidth: Integer;
vIconHeight: Integer;
vBitmapMask: TBitmap;
vBitmapColor: TBitmap;
vIconInfo: TIconInfo;
begin
Result := True;
if mSize32 then begin
vIconWidth := 32;
vIconHeight := 32;
end else begin
vIconWidth := 16;
vIconHeight := 16;
end;
vBitmapMask := TBitmap.Create;
vBitmapColor := TBitmap.Create;
try
vBitmapMask.Width := vIconWidth;
vBitmapMask.Height := vIconHeight;
vBitmapMask.Canvas.Brush.Color := clBlack;
vBitmapMask.Canvas.Rectangle(0, 0, vIconWidth, vIconHeight);
vBitmapColor.Width := vIconWidth;
vBitmapColor.Height := vIconHeight;
StretchBlt(vBitmapColor.Canvas.Handle, 0, 0, vIconWidth, vIconHeight,
mBitmap.Canvas.Handle, 0, 0, mBitmap.Width, mBitmap.Height, SRCCOPY);
vIconInfo.fIcon := True;
vIconInfo.xHotspot := 0;
vIconInfo.yHotspot := 0;
vIconInfo.hbmMask := vBitmapMask.Handle;
vIconInfo.hbmColor := vBitmapColor.Handle;
mIcon.Handle := CreateIconIndirect(vIconInfo);
except
Result := False;
end;
vBitmapMask.Free;
vBitmapColor.Free;
end; { BmpToIco }
//for Borland C++ Builder
bool BmpToIco(Graphics::TBitmap* mBitmap, TIcon* mIcon, bool mSize32 = true)
{
///////begin var
int vIconWidth;
int vIconHeight;
Graphics::TBitmap* vBitmapMask;
Graphics::TBitmap* vBitmapColor;
TIconInfo vIconInfo;
///////end var
if ((mBitmap == NULL) || (mIcon == NULL)) return false;
if (mSize32) {
vIconWidth = 32;
vIconHeight = 32;
} else {
vIconWidth = 16;
vIconHeight = 16;
};
vBitmapMask = new Graphics::TBitmap;
vBitmapColor = new Graphics::TBitmap;
try {
vBitmapMask->Width = vIconWidth;
vBitmapMask->Height = vIconHeight;
vBitmapMask->Canvas->Brush->Color = clBlack;
vBitmapMask->Canvas->Rectangle(0, 0, vIconWidth, vIconHeight);
vBitmapColor->Width = vIconWidth;
vBitmapColor->Height = vIconHeight;
StretchBlt(vBitmapColor->Canvas->Handle, 0, 0, vIconWidth, vIconHeight,
mBitmap->Canvas->Handle, 0, 0, mBitmap->Width, mBitmap->Height, SRCCOPY);
vIconInfo.fIcon = true;
vIconInfo.xHotspot = 0;
vIconInfo.yHotspot = 0;
vIconInfo.hbmMask = vBitmapMask->Handle;
vIconInfo.hbmColor = vBitmapColor->Handle;
mIcon->Handle = CreateIconIndirect(&vIconInfo);
} __finally {
delete vBitmapMask;
delete vBitmapColor;
};
return true;
} /* BmpToIco */
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BmpToIco(Image1->Picture->Bitmap, Image2->Picture->Icon);
}
//---------------------------------------------------------------------------
redsuns2001
2002-05-28
打赏
举报
回复
《程序员》Borland专刊中有提到。----Delphi常见图象格式转换技术。
紫色狂澜
2002-05-27
打赏
举报
回复
用ExTractIconEx()
参数index=0
搞定
dealxl
2002-05-26
打赏
举报
回复
何苦呢,直接用Imagelist,会帮你把位图分割掉,直接用在程序里。或者用Borland赠送的ImageEditor完全可以了啊
xiaohan13916830
2002-05-26
打赏
举报
回复
如果编程怎样实现?
shymeng
2002-05-24
打赏
举报
回复
在网上下载Iconcool吧,可以转换,功能强大得很...
魔法
ICO
v1.00
1) 把.
BMP
和.PNG格式的图片批量转换成图标; 2) 从.EXE可执行文件中提取图标。 特别说明:由.
BMP
图片转换得到的图片色彩效果不太理想,建议把.
BMP
图片转换为.PNG格式,会得到更好的效果。转换图片格式可以用ACDSee...
ToYcon图标转换软件
使用很简单,直接拖图片到图标上就行,支持
bmp
,png,jpg等等转换到
ico
,还可以转换
ico
到png,都支持背景透明,所有做
ico
的时候比较方便,不用担心背景不透明了。右键点击软件可设置参数等等。
超强EXE资源修改器(骇客修改器)
图像资源 (图标,指针和位图) 可以被相应的图像文件 (*.
ico
, *.cur, *.
bmp
),*.res 文件,甚至另一个 *.exe 文件所替换。对话,菜单,字符串表,加速器和消息表资源脚本 (以及 Borland 窗体) 可以通过使用内部资源...
软件开发常用图标
软件开发必不可少的,比较全的图标,可以收藏哦
新版Android开发教程.rar
程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode
转成
自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章