mfc對(duì)話框打開一幅圖片并在picture顯示和圖片保存

mfc對(duì)話框打開一幅圖片并在picture顯示和圖片保存

ID:29640020

大?。?56.00 KB

頁數(shù):7頁

時(shí)間:2018-12-21

mfc對(duì)話框打開一幅圖片并在picture顯示和圖片保存_第1頁
mfc對(duì)話框打開一幅圖片并在picture顯示和圖片保存_第2頁
mfc對(duì)話框打開一幅圖片并在picture顯示和圖片保存_第3頁
mfc對(duì)話框打開一幅圖片并在picture顯示和圖片保存_第4頁
mfc對(duì)話框打開一幅圖片并在picture顯示和圖片保存_第5頁
資源描述:

《mfc對(duì)話框打開一幅圖片并在picture顯示和圖片保存》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫

1、學(xué)了MFC一段時(shí)間后,試著要用對(duì)話框打開一幅bmp圖像并保存,結(jié)果發(fā)現(xiàn)網(wǎng)上這些資料太少了,而且有的也講不清,講不全,所以自己磕磕碰碰搗鼓了好久,期間也謝謝各位大神的指導(dǎo),現(xiàn)在我終于完成,特意寫出來與大家分享,各位菜鳥共勉。一、首先要先了解bmp位圖結(jié)構(gòu)http://wenku.baidu.com/view/d06c23543c1ec5da50e2706d.html可以去看看,內(nèi)容不多但是夠看,也容易懂二、了解位圖的顯示函數(shù)SetStretchBltMode()StretchDIBits()具體函數(shù)介紹自己百度一下,我就不多說了三、開始做啦1、新建一個(gè)MFC對(duì)話框文檔默

2、認(rèn)其他設(shè)置,點(diǎn)擊完成后會(huì)出現(xiàn)這個(gè)界面在按鈕上單擊鼠標(biāo)右鍵,在彈出的列表中選擇屬性把標(biāo)題改為讀取圖片再添加一個(gè)按鈕,把ID改為IDC_SAVE,標(biāo)題改為保存圖片在控件中選擇圖像,然后在對(duì)話框畫一個(gè)大小適宜的矩形框,在選中對(duì)話框點(diǎn)擊右鍵,選擇屬性,把ID改為IDC_PICTURE回到對(duì)話框界面,雙擊讀取圖片按鈕,這時(shí)會(huì)彈出一個(gè)對(duì)話框,點(diǎn)確定然后就會(huì)跳到關(guān)聯(lián)函數(shù)這邊了先把CDialog::OnOK();注釋起來,這個(gè)是點(diǎn)擊按鈕后對(duì)話框就會(huì)關(guān)閉的函數(shù)然后在//CDialog::OnOK();下面添加以下代碼代碼都有注釋,不懂的地方可以自己再百度//CFileDialog為VC

3、中打開文件對(duì)話框類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;}//為圖像數(shù)據(jù)申請(qǐng)空間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控件所在的矩形區(qū)域CDC*pDC=pWnd->GetDC();//獲得pictrue控件的DC//顯示圖片pDC->SetStretchBltMode(COLORONCOLOR);Stretc

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。