MFC实现bmp图片的打开和保存

MFC实现bmp图片的打开和保存

ID:37581361

大小:309.92 KB

页数:7页

时间:2019-05-25

MFC实现bmp图片的打开和保存_第1页
MFC实现bmp图片的打开和保存_第2页
MFC实现bmp图片的打开和保存_第3页
MFC实现bmp图片的打开和保存_第4页
MFC实现bmp图片的打开和保存_第5页
资源描述:

《MFC实现bmp图片的打开和保存》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、郑海波MFC编程总结2011‐10‐3北京打开一幅图片1.新建一个多文档的MFC应用程序.2.在_Doc.h文件的C_Doc类中增加如下成员变量;public:intnumquad;//调色板数intflagOpen;//标志是否打开bmpBITMAPINFO*pbi;//记录图像细节BYTE*lpbuf;//图像数据RGBQUAD*quad;//调色板BITMAPFILEHEADERbf;//文件头BITMAPINFOHEADERbi;//信息头3.修改”打开”菜单项的响应函数;a.找到菜单资源b.在”打开”菜单项建立类向导,页面设置

2、如下:选择“Addfunction”,然后单击“EditCode”第1页郑海波MFC编程总结2011‐10‐3北京编辑代码如下:voidCZhbDoc::OnFileOpen(){//TODO:AddyourcommandhandlercodehereLPCTSTRlpszFilter="BMPFiles(*.bmp)

3、*.bmp

4、任何文件

5、*.*

6、

7、";CFileDialogdlg(TRUE,lpszFilter,NULL,OFN_HIDEREADONLY

8、OFN_OVERWRITEPROMPT,lpszFilter,NULL);CS

9、tringfilepath;CFilefile;//打开文件对话框if(dlg.DoModal()==IDOK){filepath=dlg.GetPathName();if(file.Open(filepath,CFile::modeRead

10、CFile::shareDenyNone,NULL)==0){//读取文件失败AfxMessageBox("无法打开文件!",MB_OK,0);return;}//读取文件头file.Read(&bf,sizeof(bf));//判断是否是BMP文件if(bf.bfType!=0x4d42)//'

11、BM'{AfxMessageBox("非BMP文件!",MB_OK,0);return;}//判断文件是否损坏if(file.GetLength()!=bf.bfSize){AfxMessageBox("文件已损坏,请检查!",MB_OK,0);return;}//读文件信息头file.Read(&bi,sizeof(bi));//计算调色板数目numquad=0;if(bi.biBitCount<24){numquad=1<

12、i=(BITMAPINFO*)HeapAlloc(GetProcessHeap(),0,sizeof(BITMAPINFOHEADER)+numquad*sizeof(RGBQUAD));memcpy(pbi,&bi,sizeof(bi));quad=(RGBQUAD*)((BYTE*)pbi+sizeof(BITMAPINFOHEADER));//读取调色板if(numquad!=0){file.Read(quad,sizeof(RGBQUAD)*numquad);}//为图像数据申请空间bi.biSizeImage=bf.bfSiz

13、e‐bf.bfOffBits;lpbuf=(BYTE*)HeapAlloc(GetProcessHeap(),0,bi.biSizeImage);//读取图像数据file.Read(lpbuf,bi.biSizeImage);//图像读取完毕,关闭文件,设置标志file.Close();flagOpen=1;}}4.在C_Veiw类中增加paint消息处理函数;a.如下图:第3页郑海波MFC编程总结2011‐10‐3北京点击“addhandler”,然后再点“editexisting”c.在处理函数里编写如下代码:voidCZhbVie

14、w::OnPaint(){CPaintDCdc(this);//devicecontextforpainting//TODO:AddyourmessagehandlercodehereCZhbDoc*pDoc=GetDocument();//得到文档指针,注意,文档的命名是与工程名有关的!!不同的程序不一样.ASSERT_VALID(pDoc);//是否已打开某个BMP文件if(pDoc‐>flagOpen==1){//这个函数显示DIBSetDIBitsToDevice(dc.m_hDC,//DIB将输出的设备描述表0,//设备描述表

15、中位图输出起始逻辑x地址0,//设备描述表中位图输出起始逻辑x地址pDoc‐>bi.biWidth,//DIB的宽度pDoc‐>bi.biHeight,//DIB的高度0,//DIB开始读取输出的像素数据的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。