VC 背景填充位图的几种方法
IDB_BG 是位图资源的ID
方法一
OnEraseBkgnd(CDC* pDC)
{
// 设置画刷为希望的背景
CDC backBmp;
backBmp.CreateCompatibleDC(pDC);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BG);
CBrush m_brushBackground;
m_brushBackground.CreatePatternBrush(&bitmap); ///创建位图画刷
CBrush* pOldMemDCBrush=pDC->SelectObject(&m_brushBackground);
pDC->PatBlt(0,0,m_ScrollRect.Width(),m_ScrollRect.Height(),PATCOPY);
pDC->SelectObject(pOldMemDCBrush);
return TRUE;
}
方法二
OnEraseBkgnd(CDC* pDC)
{
CBitmap m_pMap;
m_pMap.LoadBitmap(IDB_BG);
CRect rect;
GetClientRect(&rect);
BITMAP bm;
CDC dcMem;
m_pMap.GetObject(sizeof(BITMAP),&bm);
dcMem.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMem.SelectObject(&m_pMap);
for (register int nX=0;nX<rect.right-rect.left;nX+=bm.bmWidth)
for(int nY=0;nY<rect.bottom-rect.top;nY+=bm.bmHeight)
pDC->BitBlt(nX,nY,bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(pOldBitmap);
return TRUE;
}
方法三
OnEraseBkgnd(CDC* pDC)
{
CBitmap bmp;
bmp.LoadBitmap(IDB_BG); ///加载位图
CBrush m_brushBackground;
m_brushBackground.CreatePatternBrush(&bmp); ///创建位图画刷
CRect rect;
GetClientRect(&rect);
pDC->FillRect(rect,&m_brushBackground); //用背景画填充区域
return TRUE;
}