天天看點

MFC VS2012對話框背景填圖

這是使用vs 2012編寫mfc對話框程式的教程,主要是關于圖檔處理方面的操作,這些在mfc遊戲、圖檔處理、軟體編寫中是經常要用到的知識。

一.建立項目

檔案-建立項目-mfc應用程式-該頁面使用“基于對話框”-完成即可。

MFC VS2012對話框背景填圖

注意:取消“使用unicode庫”,否則在使用afxmessagebox會報錯,沒有一個可以轉換的參數類型,要加afxmessagebox(_t(“..”))。

運作結果:

MFC VS2012對話框背景填圖

二.添加背景bitmap資源

在“資源視圖”中右鍵滑鼠dialog處,選擇“添加資源”。

MFC VS2012對話框背景填圖

在“添加資源”對話框中選擇bitmap,點選“導入”,選擇工程檔案res檔案夾中的背景圖檔,它會添加一張idb_bitmap1的圖檔。

MFC VS2012對話框背景填圖

注意:在添加的圖檔中最好使用的是24位的bmp格式圖檔,圖檔應該放入res檔案夾中。

MFC VS2012對話框背景填圖

三.編寫代碼

找到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);    

}

MFC VS2012對話框背景填圖

四.運作結果

運作結果如下圖所示:

MFC VS2012對話框背景填圖

由于我是剛學習vs2012編寫mfc程式,在處理顯示圖檔中遇到了很多問題,也參考了很多很多csdn大神的部落格,希望這篇部落格能幫助大家。~~初學者學習,高手忽略。

我很大程度上隻是轉載了它的内容,自己在通過vs2012實作該功能的。(eastmount 2013-5-31-夜12點)

繼續閱讀