VS2013MFC單文件工程學習筆記八
有三種方法,我用第二種方法做例子,方法一: 1、宣告成員變數CBrush m_brush; 2、在InitDialog中新增程式碼: CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP1是圖片資源ID m_brush.CreatePatternBrush(&bmp); 3、過載對話方塊的OnCtlColor,改最後的返回值: 1 return (HBRUSH)m_brush; 方法二: 把下面這段程式碼加進OnPaint()裡就行了 CPaintDC dc(this); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //這個IDB_BITMAP1要自己新增 CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0,0,200,200); // 這些引數可以調整圖片新增位置和大小 dc.SelectObject(pOldBrush); 方法三:使用StretchBlt()函式,具有影象自適應窗體功能 CPaintDC dc(this); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //這個IDB_BITMAP1要自己新增 CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0,0,200,200); // 這些引數可以調整圖片新增位置和大小 dc.SelectObject(pOldBrush);
筆記開始:
首先在 MFAppView.h 標頭檔案中 找到類class CMFAppView : public CView{}
在這個類中宣告一個訊息表示這個訊息我要用,這個訊息屬於我
public:
afx_msg void OnPaint();
把上面的程式碼複製到這個class CMFAppView類中宣告完畢然後在原始檔中實現他
在MFAppView.cpp原始檔中建立一個OnPaint()訊息回撥 名字叫做 void CMFAppView::OnPaint() 類名::OnPaint()
void CMFAppView::OnPaint() { CRect rc; GetWindowRect(&rc); rc.Width(); //獲得寬度 rc.Height(); //獲得高度 CPaintDC dc(this); CBitmap bitmap; bitmap.LoadBitmap(IDB_圖片ID這個要改自己的圖片ID); CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0, 0, rc.Width(), rc.Height()); // 這些引數可以調整圖片新增位置和大小 dc.SelectObject(pOldBrush); }
懶得寫的直接把上面的程式碼複製進去
這樣程式碼就寫完了,但是資源還沒有匯入呢,我們匯入圖片資源
點選 資源檢視 - 對著專案 (右鍵) - 新增(出現一個選單) - 資源
匯入(出現對話方塊) - 選擇一一張圖片 - 開啟
這樣圖片就匯入到程式資源表了, 找到這個圖片記下它的ID號 我的圖片ID是IDB_BITMAP1
bitmap.LoadBitmap(IDB_圖片ID這個要改自己的圖片ID); 在原始碼這句程式碼中填寫你的圖片ID號 我的圖片ID是IDB_BITMAP1
寫完執行看看,我的效果圖