MFC打开和保存一幅bmp图片---编程流程_第1页
MFC打开和保存一幅bmp图片---编程流程_第2页
MFC打开和保存一幅bmp图片---编程流程_第3页
MFC打开和保存一幅bmp图片---编程流程_第4页
MFC打开和保存一幅bmp图片---编程流程_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MFC打开和保存一幅-编程流程bmp图片BITMAPFILEHEADER标志是否打开bmp / 记录图像细节 图像数据/调色板 bf;文件头+ _ String Table + LjToolbar妬(B耗CD5:CtrlN1fCTCQ).CtrlO-夭旳CtrlS另存为IAUfTffl-打印预盏00打阳设萱R).”f zhb resourcEs + _AcceicraWr 、Dialog 1 _ IconM&nu岂 *DR_MAINFR/5 *DRH8TVPl打开一幅图片1. 新建一个多文档的MFC应用程序.2. 在_Doc.h文件的C_Doc类中增加如下成员变量;public:int n u

2、mquad; /调色板数int flagOpe n; / BITMAPINFO* pbi;BY TE* lpbuf; / RGBQUAD* quad;BITMAPINFOHEADER bi; / 信息头3. 修改”打开”菜单项的响应函数;a.找到菜单资源 b.在”打开”菜单项建立类向导,页面设置如下:选择“ Addfunction ” ,然后单击“ Edit Code”编辑代码如下:void CZhbDoc:OnFileOpen()/ TODO: Add your command handler code hereLPCTSTR lpszFilter=BMP Files(*.bmp)|*.bm

3、p|任何文件 |*.*|;CFileDialogdlg (TRUE,lpszFilter,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,lpszFilter,NULL);CString filepath;CFile file;/打开文件对话框if(dlg.DoModal()=IDOK)filepath=dlg.GetPathName();if(file.Open(filepath,CFile:modeRead|CFile:shareDenyNone,NULL)=0)/读取文件失败AfxMessageBox(无法打开文件! ,MB_OK,0);return;

4、/读取文件头 file.Read(&bf,sizeof(bf);/判断是否是BMP文件 if(bf.bfType!=0x4d42)/BMAfxMessageBox(非 BMP文件! ,MB_OK,0); return;/判断文件是否损坏if(file.GetLength()!=bf.bfSize)AfxMessageBox(文件已损坏,请检查!,MB_OK,0);return;/读文件信息头file.Read(&bi,sizeof(bi);/计算调色板数目numquad=0;if(bi.biBitCount24)numquad=1flagOpe n=1)/这个函数显示DIBSetDIBitsT

5、oDevice(dc.m_hDC,/DIB将输出的设备描述表0,/设备描述表中位图输出起始逻辑 x地址0,0,pDoc-bi.biWidth, /DIBpDoc-bi.biHeight, /DIB/DIB/DIB/DIBpDoc-bi.biHeight, /DIBpDoc-lpbuf, /pDoc-pbi, /DIB_RGB_COLORS); /的宽度的高度开始读取输出的像素数据的开始读取输出的像素数据的中像素的水平行号,它对应x位置y位置IpBits内存缓冲区第一行数据的行数,对应包含在由IpBits所指内存缓冲区中的数据包含像素数据的内存缓冲区的指针指向初始化了的BITMAPINFC数据结

6、构的指针,描述了位图的大小和色彩数指定是显示的颜色Inv alidate(FALSE);/ Do not call CView:OnPaint() for painting messages保存一幅图片1.修改”另存为”菜单项的响应函数a找到菜单资源bDoc IAll class members t I #OnFileSavtAsIxl対牛CE)涓皤匡I査着M窗口世Ctrl + N Ctrl#Ozhb resources:二AcceleratorLDialog卜 O Icon-J Menu亘 IDR MMMFRAME 吕 idrZzubtype卜 O String Table 卜 CJ Too

7、lbar* L_l Versionb在”另存为”菜单项建立类向导,页面设置如下:选择“ Addfunction ” ,然后单击“ EditCode代码如下:void CZhbDoc:OnFileSaveAs()LPCTSTR lpszFilter=BMP Files(*.bmp)|*.bmp|任何文件 |*.*|;CFileDialogdlg(FALSE,lpszFilter,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,lpszFilter,NULL);if (dlg.DoModal()!=IDOK)return;CFile file;CFileException fe;if (!file.Open(dlg.GetPathName(),CFile:modeCreate | CFile:modeReadWrite |CFile:shareExclusive, &fe)/ 失败ReportSaveLoadException(dlg.GetPathName(),&fe,TRUE,AFX_IDPN VALID_FILENAME);return;file.SeekToBegin();file.Write(&bf,sizeof(bf);file.Write(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论