VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
瞧瞧这个将CBitmap写到Bmp文件里的函数

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

首先,这个函数只能针对24色的bitmap.

void CAppDlg::WriteBmp(CBitmap *PBitmap)
{
 BITMAPINFO *m_pBMI;
 BYTE *m_pDIBData;
 BITMAPFILEHEADER bfh;
 BITMAPINFOHEADER bi;
 BITMAP BM;
 PBitmap->GetObject(sizeof(BM),&BM);
 CClientDC dc(this);
 bi.biSize  = sizeof(BITMAPINFOHEADER);
 bi.biWidth  = BM.bmWidth;
 bi.biHeight   = BM.bmHeight;
 bi.biPlanes   = 1;
 bi.biBitCount  = 24;
 bi.biCompression = 0;
 bi.biSizeImage  = 0;
 bi.biXPelsPerMeter = 0;
 bi.biYPelsPerMeter = 0;
 bi.biClrUsed  = 0;
 bi.biClrImportant = 0;
   
 bfh.bfType=0x4d42;
 bfh.bfOffBits=sizeof(bfh)+sizeof(BITMAPINFOHEADER);
 bfh.bfSize=bfh.bfOffBits+BM.bmWidth*BM.bmHeight*3;
 bfh.bfReserved1=0;
 bfh.bfReserved2=0;
 
 m_pBMI=(BITMAPINFO*)new char[sizeof(BITMAPINFO)];
    m_pDIBData=(BYTE*)new char[bfh.bfSize-bfh.bfOffBits];
 
 memcpy(m_pBMI,&bi,sizeof(BITMAPINFOHEADER));
 GetDIBits(dc.GetSafeHdc(), (HBITMAP)PBitmap->GetSafeHandle(), 0l, (DWORD)bi.biHeight,
  (LPVOID)m_pDIBData,(LPBITMAPINFO)m_pBMI, (DWORD)DIB_RGB_COLORS);
  CFile file;
 if(!file.Open(m_FileName,CFile::modeCreate|CFile::modeWrite))
 {
  MessageBox("error!");
  return;
 }
 file.Write(&bfh,sizeof(bfh));
 file.Write(m_pBMI,sizeof(BITMAPINFOHEADER));
 file.Write(m_pDIBData,BM.bmWidth*BM.bmHeight*3);
 file.Close();
 delete m_pBMI;
 delete m_pDIBData;


}

其实横简单吧!在本站的GetPicture软件中有源代码.




相关文章

相关软件