mfc对话框打开一幅图片并在picture显示和图片保存

mfc对话框打开一幅图片并在picture显示和图片保存

ID:29640020

大小:456.00 KB

页数:7页

时间:2018-12-21

mfc对话框打开一幅图片并在picture显示和图片保存_第1页
mfc对话框打开一幅图片并在picture显示和图片保存_第2页
mfc对话框打开一幅图片并在picture显示和图片保存_第3页
mfc对话框打开一幅图片并在picture显示和图片保存_第4页
mfc对话框打开一幅图片并在picture显示和图片保存_第5页
资源描述:

《mfc对话框打开一幅图片并在picture显示和图片保存》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、学了MFC一段时间后,试着要用对话框打开一幅bmp图像并保存,结果发现网上这些资料太少了,而且有的也讲不清,讲不全,所以自己磕磕碰碰捣鼓了好久,期间也谢谢各位大神的指导,现在我终于完成,特意写出来与大家分享,各位菜鸟共勉。一、首先要先了解bmp位图结构http://wenku.baidu.com/view/d06c23543c1ec5da50e2706d.html可以去看看,内容不多但是够看,也容易懂二、了解位图的显示函数SetStretchBltMode()StretchDIBits()具体函数介绍自己百度一下,我就不多说了三、开始做啦1、新建一个MFC对话框文档默

2、认其他设置,点击完成后会出现这个界面在按钮上单击鼠标右键,在弹出的列表中选择属性把标题改为读取图片再添加一个按钮,把ID改为IDC_SAVE,标题改为保存图片在控件中选择图像,然后在对话框画一个大小适宜的矩形框,在选中对话框点击右键,选择属性,把ID改为IDC_PICTURE回到对话框界面,双击读取图片按钮,这时会弹出一个对话框,点确定然后就会跳到关联函数这边了先把CDialog::OnOK();注释起来,这个是点击按钮后对话框就会关闭的函数然后在//CDialog::OnOK();下面添加以下代码代码都有注释,不懂的地方可以自己再百度//CFileDialog为VC

3、中打开文件对话框类BITMAPFILEHEADERbmpHeader;//文件头BITMAPINFOHEADERbmpInfo;//信息头CFileDialogdlg(TRUE,"*.BMP",NULL,NULL,"位图文件(*.BMP)

4、*.bmp;*.BMP

5、",this);CFilebmpFile;//记录打开文件CStringstrFileName;//记录选择文件路径if(!dlg.DoModal()==IDOK)return;strFileName=dlg.GetPathName();//以只读的方式打开文件if(!bmpFile.Open(strFile

6、Name,CFile::modeRead

7、CFile::typeBinary))return;if(bmpFile.Read(&bmpHeader,sizeof(BITMAPFILEHEADER))!=sizeof(BITMAPFILEHEADER)){AfxMessageBox("readbmpheaderfailed!");return;}if(bmpHeader.bfType!=0x4d42){AfxMessageBox("invalidfiletype!");return;}if(bmpFile.Read(&bmpInfo,sizeof(BITMAPINFOH

8、EADER))!=sizeof(BITMAPINFOHEADER)){AfxMessageBox("readbmpinforheaderfailed!");return;}if(bmpInfo.biBitCount!=24){AfxMessageBox("Fileisnot24bit.Applicationdoesn'tsupportthiskindoffile!");return;}pBmpInfo=(BITMAPINFO*)newchar[sizeof(BITMAPINFOHEADER)];if(!pBmpInfo){AfxMessageBox("memoryer

9、ror!");return;}//为图像数据申请空间memcpy(pBmpInfo,&bmpInfo,sizeof(BITMAPINFOHEADER));DWORDdataBytes=bmpHeader.bfSize-bmpHeader.bfOffBits;pBmpData=(BYTE*)newchar[dataBytes];if(!pBmpData){AfxMessageBox("memoryerror!");deletepBmpData;return;}if(bmpFile.Read(pBmpData,dataBytes)!=dataBytes){AfxMessa

10、geBox("Readbmpdatafailed!");deletepBmpInfo;deletepBmpData;return;}bmpFile.Close();CWnd*pWnd=GetDlgItem(IDC_PICTURE);//获得pictrue控件窗口的句柄CRectrect;pWnd->GetClientRect(&rect);//获得pictrue控件所在的矩形区域CDC*pDC=pWnd->GetDC();//获得pictrue控件的DC//显示图片pDC->SetStretchBltMode(COLORONCOLOR);Stretc

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

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

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