MFC VS2012對話框背景填圖
這是使用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大神的博客,希望這篇博客能幫助大家。~~初學者學習,高手忽略。
其中主要感謝y30369的CSDN一篇使用VC++ MFC的博客,詳細網址如下:
https://blog.csdn.net/y30369/article/details/6467468
我很大程度上隻是轉載了它的內容,自己在通過VS2012實現該功能的。(Eastmount 2013-5-31-夜12點)
最後更新:2017-04-03 18:52:05