19,468
社区成员
发帖
与我相关
我的任务
分享
void Bmp2Ico(String strBmpFileName, int nBit)
{
int nIconWidth = GetSystemMetrics(SM_CXICON);
int nIconHeight = GetSystemMetrics(SM_CYICON);;
Graphics::TBitmap *MyBmp = new Graphics::TBitmap();
MyBmp->LoadFromFile(strBmpFileName);
Graphics::TBitmap *AndMask = new Graphics::TBitmap();
AndMask->Width = nIconWidth;
AndMask->Height = nIconHeight;
AndMask->Canvas->Brush->Color = clBlack;
AndMask->Canvas->Rectangle(0, 0, nIconWidth, nIconHeight);
Graphics::TBitmap *XorMask = new Graphics::TBitmap();
XorMask->Width = nIconWidth;
XorMask->Height = nIconHeight;
StretchBlt(XorMask->Canvas->Handle, 0, 0, nIconWidth, nIconHeight,
MyBmp->Canvas->Handle, 0, 0, MyBmp->Width, MyBmp->Height, SRCCOPY);
TIcon *pIcon = new TIcon();
TIconInfo IconInfo;
IconInfo.fIcon = true;
IconInfo.xHotspot = 0;
IconInfo.yHotspot = 0;
IconInfo.hbmMask = AndMask->Handle;
IconInfo.hbmColor = XorMask->Handle;
pIcon->Handle = CreateIconIndirect(&IconInfo);
delete AndMask;
delete XorMask;
delete MyBmp;
String strIcoFileName = ChangeFileExt(strBmpFileName, ".ico");
SaveIcon(pIcon->Handle, strIcoFileName.c_str(), nBit);
delete pIcon;
}