Posted on 2012-10-25 17:38
盛勝 閱讀(657)
評論(0) 編輯 收藏 引用
新建一個MFC項目
在類視圖中添加OnEraseBkgnd的消息響應(yīng)函數(shù),函數(shù)的編寫如下:
BOOL CbackgDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值
CDialog::OnEraseBkgnd(pDC);
if(!m_Bitmap.m_hObject)
return true;
CRect rect;
GetClientRect(&rect);
//設(shè)備上下文對象的類
CDC dc;
//該函數(shù)創(chuàng)建一個與指定設(shè)備兼容的內(nèi)存設(shè)備上下文環(huán)境(DC)
dc.CreateCompatibleDC(pDC);
//該函數(shù)選擇一對象到指定的設(shè)備上下文環(huán)境中,該新對象替換先前的相同類型的對象
CBitmap* pOldBitmap = dc.SelectObject(&m_Bitmap);
int bmw, bmh ;
BITMAP bmap;
m_Bitmap.GetBitmap(&bmap);
bmw = bmap.bmWidth;
bmh = bmap.bmHeight;
int xo=0, yo=0;
////////此處貼圖采用拉伸strentch//////////
pDC->StretchBlt(xo, yo, rect.Width(),rect.Height(), &dc,
0, 0,bmw,bmh, SRCCOPY);
/////////////////////////////////////////
dc.SelectObject(pOldBitmap);
return true;
//return CDialog::OnEraseBkgnd(pDC);
}
m_bitmap在頭文件中聲明
private:
CBitmap m_Bitmap;
并在窗口初始化函數(shù)OnInitDialog()中添加一句:
m_Bitmap.LoadBitmap(IDB_BITMAP1);
圖片為bmp格式可行,圖片為png格式不可行。其他圖片類型未測試。
BOOL StretchBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, DWORD dwRop);
hdcDest:指向目標(biāo)設(shè)備環(huán)境的句柄。 nXOriginDest:指定目標(biāo)矩形左上角的X軸坐標(biāo),按邏輯單位表示坐標(biāo)。 nYOriginDest:指定目標(biāo)矩形左上角的Y軸坐標(biāo),按邏輯單位表示坐標(biāo)。 nWidthDest:指定目標(biāo)矩形的寬度,按邏輯單位表示寬度。 nHeightDest:指定目標(biāo)矩形的高度,按邏輯單位表示高度。 hdcSrc:指向源設(shè)備環(huán)境的句柄。 nXOriginSrc:指向源矩形區(qū)域左上角的X軸坐標(biāo),按邏輯單位表示坐標(biāo)。 nYOriginSrc:指向源矩形區(qū)域左上角的Y軸坐標(biāo),按邏輯單位表示坐標(biāo)。 nWidthSrc:指定源矩形的寬度,按邏輯單位表示寬度。 nHeightSrc:指定源矩形的高度,按邏輯單位表示高度。 dwRop:指定要進(jìn)行的光柵操作。光柵操作碼定義了系統(tǒng)如何在輸出操作中組合顏色,這些操作包括刷子、源位圖和目標(biāo)位圖等對象。參考BitBlt可了解常用的光柵操作碼列表。 下面列出了一些常見的光柵操作代碼: BLACKNESS:表示使用與物理調(diào)色板的索引0相關(guān)的色彩來填充目標(biāo)矩形區(qū)域,(對缺省的物理調(diào)色板而言,該顏色為黑色)。 DSTINVERT:表示使目標(biāo)矩形區(qū)域顏色取反。 MERGECOPY:表示使用布爾型的AND(與)操作符將源矩形區(qū)域的顏色與特定模式組合一起。 MERGEPAINT:通過使用布爾型的OR(或)操作符將反向的源矩形區(qū)域的顏色與目標(biāo)矩形區(qū)域的顏色合并。 NOTSRCCOPY:將源矩形區(qū)域顏色取反,再拷貝到目標(biāo)矩形區(qū)域。 NOTSRCERASE:使用布爾類型的OR(或)操作符組合源和目標(biāo)矩形區(qū)域的顏色值,然后將合成的顏色取反。 PATCOPY:將特定的模式拷貝到目標(biāo)位圖上。 PATPAINT:通過使用布爾OR(或)操作符將源矩形區(qū)域取反后的顏色值與特定模式的顏色合并。然后使用OR(或)操作符將該操作的結(jié)果與目標(biāo)矩形區(qū)域內(nèi)的顏色合并。 PATINVERT:通過使用XOR(異或)操作符將源和目標(biāo)矩形區(qū)域內(nèi)的顏色合并。 SRCAND:通過使用AND(與)操作符來將源和目標(biāo)矩形區(qū)域內(nèi)的顏色合并。 SRCCOPY:將源矩形區(qū)域直接拷貝到目標(biāo)矩形區(qū)域。 SRCERASE:通過使用AND(與)操作符將目標(biāo)矩形區(qū)域顏色取反后與源矩形區(qū)域的顏色值合并。 SRCINVERT:通過使用布爾型的XOR(異或)操作符將源和目標(biāo)矩形區(qū)域的顏色合并。 SRCPAINT:通過使用布爾型的OR(或)操作符將源和目標(biāo)矩形區(qū)域的顏色合并。 WHITENESS:使用與物理調(diào)色板中索引1有關(guān)的顏色填充目標(biāo)矩形區(qū)域。(對于缺省物理調(diào)色板來說,這個顏色就是白色)