VS2010中 为图片添加背景图片

很简单的东西,嘿嘿

  1. void CTestDlg::OnPaint()  
  2. {  
  3.     if (IsIconic())  
  4.     {  
  5.         CPaintDC dc(this); // 用于绘制的设备上下文  
  6.   
  7.         SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);  
  8.   
  9.         // 使图标在工作区矩形中居中  
  10.         int cxIcon = GetSystemMetrics(SM_CXICON);  
  11.         int cyIcon = GetSystemMetrics(SM_CYICON);  
  12.         CRect rect;  
  13.         GetClientRect(&rect);  
  14.         int x = (rect.Width() - cxIcon + 1) / 2;  
  15.         int y = (rect.Height() - cyIcon + 1) / 2;  
  16.   
  17.         // 绘制图标  
  18.         dc.DrawIcon(x, y, m_hIcon);  
  19.     }  
  20.     else  
  21.     {  
  22.         CPaintDC dc(this);  
  23.         CRect rect;  
  24.         GetClientRect(&rect);//获取客户的的大小  
  25.      
  26.         CDC  memDC;  
  27.         CBitmap cBitmap;  
  28.         CBitmap* pOldMemBmp=NULL;  
  29.         cBitmap.LoadBitmap(IDB_BITMAP1);  
  30.     
  31.         memDC.CreateCompatibleDC(&dc);//创建一个设备对象上下文  
  32.         pOldMemBmp=memDC.SelectObject(&cBitmap);  
  33.      
  34.         BITMAP   bmp;     
  35.         cBitmap.GetBitmap(&bmp);  
  36.         SetStretchBltMode(dc,STRETCH_HALFTONE);//据说能减少失真  
  37.         dc.StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);  
  38.     
  39.         memDC.SelectObject(pOldMemBmp);  
  40.         CDialogEx::OnPaint();  
  41.     }  

是不是很简单呢

posted @ 2014-09-15 09:23  r163  阅读(1318)  评论(0编辑  收藏  举报