bmp转ico

ico文件比较特殊,一般都不能转,这里从网友那儿看到了一段把bmp转ico的代码,没有试过,先留着以后用的上的时候,拿出来试试。多谢网友的分享。
CFileDialog   DlgFileOpen(   TRUE, "*.ICO ",NULL,NULL, "bmp文件(*.BMP)|*.BMP|| "); 
if(DlgFileOpen.DoModal()==IDCANCEL) 
return; 
HBITMAP   hBmpClr=   (HBITMAP)   ::LoadImage(AfxGetResourceHandle(), 
                                             DlgFileOpen.GetFileName(), 
                                             IMAGE_BITMAP, 
                                             0,0, 
                                             LR_DEFAULTCOLOR|LR_DEFAULTSIZE|LR_LOADFROMFILE 
                                             ); 

CDC   dcMemSrc,dcMemDst; 
dcMemSrc.CreateCompatibleDC   (NULL); 
dcMemDst.CreateCompatibleDC(NULL); 

BITMAP   bmp; 
::GetObject   (hBmpClr,   sizeof   (BITMAP),   (LPVOID)   &bmp); 

CBitmap   bmpClr; 
dcMemSrc.SelectObject(hBmpClr); 
bmpClr.CreateCompatibleBitmap(&dcMemSrc,32,32   ); 
HBITMAP   hOldBmp=(HBITMAP)dcMemDst.SelectObject(bmpClr); 
COLORREF   clrMask=dcMemSrc.GetPixel(CPoint(0,0)); 
dcMemDst.FillSolidRect(0,0,32,32   ,clrMask); 
dcMemDst.StretchBlt(0,0,32,32   ,&dcMemSrc,0,0,bmp.bmWidth,bmp.bmHeight,SRCINVERT); 

hBmpClr=(HBITMAP)dcMemDst.SelectObject(hOldBmp); 


HBITMAP   hMaskBmp; 
CBitmap   bmpMask; 
bmpMask.CreateCompatibleBitmap(&dcMemSrc,32,32   ); 

hOldBmp   =   (HBITMAP)   dcMemSrc.SelectObject   (bmpMask); 
dcMemSrc.FillSolidRect(CRect   (0,   0,   32,   32   ),RGB(255,255,255)); 
hMaskBmp=(HBITMAP)dcMemSrc.SelectObject(hOldBmp); 
ICONINFO   IconInfo; 
IconInfo.fIcon=TRUE; 
IconInfo.hbmColor=hBmpClr; 
IconInfo.hbmMask=hMaskBmp; 
IconInfo.xHotspot=0; 
IconInfo.yHotspot=0; 
HICON   hIcon=CreateIconIndirect(&IconInfo); 

::DeleteObject(hBmpClr); 
::DeleteObject(hMaskBmp); 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值