RT,如何加载本地的bmp图片,并在窗体上显示,窗体的大小可以变化,图片填充整个窗体。谢谢!

解决方案 »

  1.   

    http://hi.baidu.com/qizlee/blog/item/093738d7366cbadca144df04.html
      

  2.   

    用GDI+ 把BMP填充到DC上就行了
      

  3.   

            CPaintDC dc(this);
            CRect rect;
            GetClientRect(&rect);//得到窗体的大小
            CDC dcMem; 
            dcMem.CreateCompatibleDC(&dc); 
            CBitmap bmpBackground;
            bmpBackground.Attach ((HBITMAP)::LoadImage(NULL, c_tcDownPicPosition, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
            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);//画窗体 在paint消息里面  有问题吗   一些句柄需要卸载吗
      

  4.   

    LoadImage(); //  不过只能加载ico, cur, bmp图片
    StretchBlt();
      

  5.   


    我的就是bmp的  StretchBlt();是什么意思  我的那个用错了?
      

  6.   

    Bitmap  * m_pImage = new Bitmap(wcImagePath);//刷到背景DC上
    Graphics graphics(hDC);
    graphics.DrawImage(m_pImage, 0, 0, rect.Width(), rect.Height());
      

  7.   

     CBitmap bitmap;
      bitmap.LoadBitmap(IDB_BITMAP1);  BITMAP bmp;
      bitmap.GetBitmap(&bmp);  CDC dcCompatible;
      dcCompatible.CreateCompatibleDC(pDC);  dcCompatible.SelectObject(&bitmap);  CRect rect;
      GetClientRect(&rect);
      pDC->SetStretchBltMode(COLORONCOLOR); //设置在指定设备内容中的伸展模式。解决失真问题。
        
      //pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);
      pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
      

  8.   

    CPaintDC dc(this);
      CRect rect;
      GetClientRect(&rect);//得到窗体的大小
      CDC dcMem;  
      dcMem.CreateCompatibleDC(&dc);  
      CBitmap bmpBackground;
      bmpBackground.Attach ((HBITMAP)::LoadImage(NULL, c_tcDownPicPosition, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
      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);//画窗体  在paint消息里面 有问题吗 一些句柄需要卸载吗
      

  9.   

    最近刚做了个程序,用到这个。。我把我的代码贴出来
    给对话框添加背景方法如下:
    1、把你的图包含到程序的“Bitmap资源”里(菜单->Insert->resource->bitmap->import->选择自己的位图就好了),提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以 。
     
    2、在你的  void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码   
      else   
      {   
              //CDialog::OnPaint();//要禁止这个调用   
              CPaintDC   dc(this);   
              CRect   rect;   
              GetClientRect(&rect);             CDC   dcMem;   
              dcMem.CreateCompatibleDC(&dc);  
     
              CBitmap   bmpBackground;   
              bmpBackground.LoadBitmap(IDB_BITMAP);   
                      //IDB_BITMAP是你自己的图对应的ID             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);   
      } 调试成功的,没问题的。希望对你有帮助