VC:UI编程

VC++中给对话框设置背景图片的方法

-----------------------------------------------------方法一(铺满窗口)-------------------------------------
在窗口的OnPaint()函数中,加入如下代码:   
      CPaintDC   dc(this);   
      CRect   rect;   
                  GetClientRect(&rect);//得到窗体的大小   
                  CDC   dcMem;     
                  dcMem.CreateCompatibleDC(&dc);     
                  CBitmap   bmpBackground;   
                  bmpBackground.LoadBitmap(IDB_BITMAP1);//加载背景图片   
                  BITMAP   bitMap;   
                  bmpBackground.GetBitmap(&bitMap);   
                  CBitmap   *pbmpOld=dcMem.SelectObject(&bmpBackground);   
                  dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);   
      将背景图片画在窗口上。如果需要较快的速度,可以采用BitBlt函数。   

-----------------------------------------------------方法二(图片不拉伸)---------------------------------------------------------------
在窗口的OnPaint()函数中,加入如下代码:   
      CPaintDC   dc(this);   
      CRect   rect;   
                  GetClientRect(&rect);//得到窗体的大小   
                  CDC   dcMem;     
                  dcMem.CreateCompatibleDC(&dc);     
                  CBitmap   bmpBackground;   
                  bmpBackground.LoadBitmap(IDB_BITMAP1);//加载背景图片   
                  BITMAP   bitMap;   
                  bmpBackground.GetBitmap(&bitMap);   
                  CBitmap   *pbmpOld=dcMem.SelectObject(&bmpBackground);   
                  dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);   
      将背景图片画在窗口上。如果需要较快的速度,可以采用BitBlt函数。   

-----------------------------------------------------------------------------------------------

void CPeculiarMenuDlg::OnPaint()
{
 CDC* m_dc = this->GetDC();//注意这里。。。。要调用CDC类下的GetDC()方法实现重绘
 CDC m_memdc;
 m_memdc.CreateCompatibleDC(m_dc);
 CBitmap m_bitmap;
 m_bitmap.LoadBitmap(IDB_MAIN);//载入的图片的ID号
 m_memdc.SelectObject(&m_bitmap);
 CRect m_rect;
// GetClientRect(m_rect);
 m_dc->BitBlt(0,0,800,700,&m_memdc,0,0,SRCCOPY);
 
 m_bitmap.DeleteObject();

}

注意,这种方法是在OnPaint()函数中实现的。

原文地址:https://www.cnblogs.com/2018shawn/p/9436897.html