mfc中,如何给对话框添加图片背景?

mfc中,如何给对话框添加图片背景?,第1张

添加背景最好是放在OnEraseBkgnd(CDC* pDC)函数中,在OnPaint中有可能会闪屏。

//     CBitmap m_pBmp

//     BITMAP bm

//     CDC dcMem

//     m_pBmp.LoadBitmap(IDB_BITMAP_BG)

//     m_pBmp.GetBitmap(&bm)//得到位图尺寸 

//     dcMem.CreateCompatibleDC(pDC)

//     CBitmap* pOldBitmap = dcMem.SelectObject(&m_pBmp)

//     pDC->SetStretchBltMode(COLORONCOLOR)//这个模式不设置的话会导致图片严重失真

//     pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, bm.bmWidth,bm.bmHeight,SRCCOPY) 

//     dcMem.SelectObject(pOldBitmap)

//     dcMem.DeleteDC()

用我这个代码

// 设置背景

BOOL CXXX::OnEraseBkgnd(CDC* pDC) 

{

    // return CView::OnEraseBkgnd(pDC)

CRect rect  

GetClientRect(&rect)  

CBitmap m_pBmp

BITMAP bm

CDC dcMem

m_pBmp.LoadBitmap(IDB_BlueBackGround)

m_pBmp.GetBitmap(&bm)//得到位图尺寸 

dcMem.CreateCompatibleDC(pDC)

CBitmap* pOldBitmap = dcMem.SelectObject(&m_pBmp)

pDC->SetStretchBltMode(COLORONCOLOR)//这个模式不设置的话会导致图片严重失真

pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0,bm.bmWidth,bm.bmHeight,SRCCOPY) 

dcMem.SelectObject(pOldBitmap)

dcMem.DeleteDC()

    return TRUE  // **** 返回true

}

// 设置颜色

BOOL CCXXXDlg::OnEraseBkgnd(CDC* pDC)

{

CRect rc

GetClientRect(rc)

COLORREF color = RGB(15,140,232)

CBrush brBlack(color)

CBrush* oldBrush = pDC->SelectObject(&brBlack)

pDC->Rectangle(rc)

pDC->SelectObject(oldBrush)

return TRUE

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/10982388.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存