MFC實(shí)現(xiàn)bmp圖片的打開和保存

MFC實(shí)現(xiàn)bmp圖片的打開和保存

ID:37581361

大?。?09.92 KB

頁數(shù):7頁

時間:2019-05-25

MFC實(shí)現(xiàn)bmp圖片的打開和保存_第1頁
MFC實(shí)現(xiàn)bmp圖片的打開和保存_第2頁
MFC實(shí)現(xiàn)bmp圖片的打開和保存_第3頁
MFC實(shí)現(xiàn)bmp圖片的打開和保存_第4頁
MFC實(shí)現(xiàn)bmp圖片的打開和保存_第5頁
資源描述:

《MFC實(shí)現(xiàn)bmp圖片的打開和保存》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、鄭海波MFC編程總結(jié)2011‐10‐3北京打開一幅圖片1.新建一個多文檔的MFC應(yīng)用程序.2.在_Doc.h文件的C_Doc類中增加如下成員變量;public:intnumquad;//調(diào)色板數(shù)intflagOpen;//標(biāo)志是否打開bmpBITMAPINFO*pbi;//記錄圖像細(xì)節(jié)BYTE*lpbuf;//圖像數(shù)據(jù)RGBQUAD*quad;//調(diào)色板BITMAPFILEHEADERbf;//文件頭BITMAPINFOHEADERbi;//信息頭3.修改”打開”菜單項(xiàng)的響應(yīng)函數(shù);a.找到菜單資源b.在”打開”菜單項(xiàng)建立類向?qū)?,頁面設(shè)置

2、如下:選擇“Addfunction”,然后單擊“EditCode”第1頁鄭海波MFC編程總結(jié)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));//計(jì)算調(diào)色板數(shù)目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));//讀取調(diào)色板if(numquad!=0){file.Read(quad,sizeof(RGBQUAD)*numquad);}//為圖像數(shù)據(jù)申請空間bi.biSizeImage=bf.bfSiz

13、e‐bf.bfOffBits;lpbuf=(BYTE*)HeapAlloc(GetProcessHeap(),0,bi.biSizeImage);//讀取圖像數(shù)據(jù)file.Read(lpbuf,bi.biSizeImage);//圖像讀取完畢,關(guān)閉文件,設(shè)置標(biāo)志file.Close();flagOpen=1;}}4.在C_Veiw類中增加paint消息處理函數(shù);a.如下圖:第3頁鄭海波MFC編程總結(jié)2011‐10‐3北京點(diǎn)擊“addhandler”,然后再點(diǎn)“editexisting”c.在處理函數(shù)里編寫如下代碼:voidCZhbVie

14、w::OnPaint(){CPaintDCdc(this);//devicecontextforpainting//TODO:AddyourmessagehandlercodehereCZhbDoc*pDoc=GetDocument();//得到文檔指針,注意,文檔的命名是與工程名有關(guān)的!!不同的程序不一樣.ASSERT_VALID(pDoc);//是否已打開某個BMP文件if(pDoc‐>flagOpen==1){//這個函數(shù)顯示DIBSetDIBitsToDevice(dc.m_hDC,//DIB將輸出的設(shè)備描述表0,//設(shè)備描述表

15、中位圖輸出起始邏輯x地址0,//設(shè)備描述表中位圖輸出起始邏輯x地址pDoc‐>bi.biWidth,//DIB的寬度pDoc‐>bi.biHeight,//DIB的高度0,//DIB開始讀取輸出的像素數(shù)據(jù)的

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

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

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