這是使用vs 2012編寫mfc對話框程式的教程,主要是關于圖檔處理方面的操作,這些在mfc遊戲、圖檔處理、軟體編寫中是經常要用到的知識。
一.建立項目
檔案-建立項目-mfc應用程式-該頁面使用“基于對話框”-完成即可。
注意:取消“使用unicode庫”,否則在使用afxmessagebox會報錯,沒有一個可以轉換的參數類型,要加afxmessagebox(_t(“..”))。
運作結果:
二.添加背景bitmap資源
在“資源視圖”中右鍵滑鼠dialog處,選擇“添加資源”。
在“添加資源”對話框中選擇bitmap,點選“導入”,選擇工程檔案res檔案夾中的背景圖檔,它會添加一張idb_bitmap1的圖檔。
注意:在添加的圖檔中最好使用的是24位的bmp格式圖檔,圖檔應該放入res檔案夾中。
三.編寫代碼
找到xxxdlg.cpp檔案夾下的void cxxxdlg::onpaint()函數,在else中進行修改。
1.首先注釋掉cdialog::onpaint()函數
cdialog是個對話框類,onpaint()是成員函數,是對視窗進行重畫,注釋掉該語句否則會調用該語句不斷重畫,而不會執行下面添加的代碼。注釋掉該語句後最小化對話框後發現控件不可見,不過移動滑鼠後又能看見。
2.添加代碼
else {
//注釋該語句:防止重複調用重畫函數
//cdialog::onpaint();
//添加代碼對話框背景貼圖
cpaintdc dc(this);
crect rect;
getclientrect(&rect); //擷取對話框長寬
cdc dcbmp;
//定義并建立一個記憶體裝置環境
dcbmp.createcompatibledc(&dc); //建立相容性dc
cbitmap bmpbackground;
bmpbackground.loadbitmap(idb_bitmap1); //載入資源中圖檔
bitmap m_bitmap; //圖檔變量
bmpbackground.getbitmap(&m_bitmap); //将圖檔載入位圖中
//将位圖選入臨時記憶體裝置環境
cbitmap *pbmpold=dcbmp.selectobject(&bmpbackground);
//調用函數顯示圖檔stretchblt顯示形狀可變
dc.stretchblt(0,0,rect.width(),rect.height(),&dcbmp,0,0,m_bitmap.bmwidth,m_bitmap.bmheight,srccopy);
}
四.運作結果
運作結果如下圖所示:
由于我是剛學習vs2012編寫mfc程式,在處理顯示圖檔中遇到了很多問題,也參考了很多很多csdn大神的部落格,希望這篇部落格能幫助大家。~~初學者學習,高手忽略。
我很大程度上隻是轉載了它的内容,自己在通過vs2012實作該功能的。(eastmount 2013-5-31-夜12點)