填充背景的三種方法

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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章