如题,谢谢!

解决方案 »

  1.   

    //从资源里面装入位图
        CBitmap bitmap;
        CBitmap* pOldBitmap;
        CDC MemDC;
    CRect rect;
    GetClientRect(&rect);
        MemDC.CreateCompatibleDC(pDC); 
        bitmap.LoadBitmap(IDB_BITMAP1);
        pOldBitmap=MemDC.SelectObject(&bitmap);
        pDC->BitBlt(0,0,m_x,m_y,&MemDC,0,0,SRCCOPY);
        MemDC.SelectObject(pOldBitmap);//-----------------------------------------------------------------------------
    //从文件里装入位图
    HBITMAP bitmap,OldBitmap;
    bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"untitled1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    ASSERT(bitmap);
    CDC MemDC;
    CRect rect;
    MemDC.CreateCompatibleDC(pDC);
    GetClientRect(rect);
    OldBitmap=(HBITMAP)MemDC.SelectObject(bitmap);
    pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
    MemDC.SelectObject(OldBitmap);
      

  2.   

    楼上的兄弟,pDC怎么得到啊?
    我MFC很菜
      

  3.   

    比如要在一个static text上面显示图片,是不是
    pDC = GetDlgItem(IDC_STSTIC1)->GetDC()?
      

  4.   

    void CTreandDlg::OnPaint() //可以在这个涵数里定义
    {
       //...
       以上代码省略
       CPaintDC pDC(this);
       CDC      pDC;
       //这两种定义方都可以,任意选择一种;
       //如果还不清楚的话就看一下MFC里面的设备上下文,很好理解的...}
      

  5.   

    刚看了一下,应该是CDC *pDC吧?
    我用下面的代码为什么不行呢?好像因为pDC没有赋值得原因?
    CBitmap bitmap;
    CBitmap* pOldBitmap;
    CDC *pDC ;
    CDC MemDC;
    CRect rect;
    GetClientRect(&rect);
    MemDC.CreateCompatibleDC(pDC); 
    bitmap.LoadBitmap(IDB_BITMAP1);
    pOldBitmap=MemDC.SelectObject(&bitmap);
    pDC->BitBlt(0,0,450,450,&MemDC,0,0,SRCCOPY);
    MemDC.SelectObject(pOldBitmap);
    另外:比如要在一个static text上面显示图片,是不是
    pDC = GetDlgItem(IDC_STSTIC1)->GetDC()?
    谢谢!
    咋就搞不定了?汗!
      

  6.   

    哈哈,pDC不用你定义,是映射函数的参数
      

  7.   

    我有源代码,刚刚写好的,你有email吗?
      

  8.   

    //将DIB转化为DDB
    HBITMAP CreateBitmapObjectFromDibFile (HDC hdc, PTSTR szFileName)
    {
         BITMAPFILEHEADER * pbmfh ;
         BOOL               bSuccess ;
         DWORD              dwFileSize, dwHighSize, dwBytesRead ;
         HANDLE             hFile ;
         HBITMAP            hBitmap ;          // Open the file: read access, prohibit write access     hFile = CreateFile (szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, 
                             OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL) ;    if (hFile == INVALID_HANDLE_VALUE)
              return NULL ;          // Read in the whole file     dwFileSize = GetFileSize (hFile, &dwHighSize) ;
         if (dwHighSize)
         {
              CloseHandle (hFile) ;
              return NULL ;
         }
         pbmfh = malloc (dwFileSize) ;
         if (!pbmfh)
         {
              CloseHandle (hFile) ;
              return NULL ;
         }
         bSuccess = ReadFile (hFile, pbmfh, dwFileSize, &dwBytesRead, NULL) ;
         CloseHandle (hFile) ;
              // Verify the file
         if (!bSuccess || (dwBytesRead != dwFileSize)         
                       || (pbmfh->bfType != * (WORD *) "BM") 
                       || (pbmfh->bfSize != dwFileSize))
         {
              free (pbmfh) ;
              return NULL ;
         }          // Create the DDB      hBitmap = CreateDIBitmap (hdc,              
                                   (BITMAPINFOHEADER *) (pbmfh + 1),
                                   CBM_INIT,
                                   (BYTE *) pbmfh + pbmfh->bfOffBits,
                                   (BITMAPINFO *) (pbmfh + 1),
                                   DIB_RGB_COLORS) ;
         free (pbmfh) ;     return hBitmap ;
    }
      

  9.   

    /////////////////////////////将图片显示到一个window
    BOOL ddbShow(HWND hDlg,PTSTR lpFileName,int index,int idWindow)
    {
    HDC hdcDlg,hdcMem,hdcWindow;
    BITMAP bm;
    HBITMAP hBitmap;
    static HWND hPic2;
    RECT        Rect;
    BOOL        showSuccess;
    //HDCRETURN hdcReturn; hdcDlg = GetDC (hDlg) ;
    hBitmap = (HBITMAP)CreateBitmapObjectFromDibFile (hdcDlg,lpFileName) ;
    hPic2=GetDlgItem(hDlg,idWindow);
    hdcWindow = (HDC)GetWindowDC (hPic2) ;
    GetClientRect(
    hPic2,      // handle to window
    &Rect   // address of structure for client coordinates
    );
              if (hBitmap)
              {
                   hdcMem = CreateCompatibleDC (hdcWindow) ;
                   SelectObject (hdcMem, hBitmap) ;//
       //获取DDB对象
       GetObject(hBitmap,sizeof(BITMAP),(PSTR)&bm);
      //设置显示DDB显示模式
               SetStretchBltMode(hdcWindow, COLORONCOLOR);
      //Rect.right=Rect.left+(Rect.bottom-Rect.top)+index;
     
      showSuccess=StretchBlt (hdcWindow, Rect.left+index, 0,
    Rect.bottom, Rect.bottom,
    hdcMem, 0, 0, bm.bmWidth,bm.bmHeight, 
    SRCCOPY) ;
     
      DeleteDC (hdcMem) ;
      
      }
      //ReleaseDC (hDlg, hdcMem) ;
      ReleaseDC (hDlg, hdcWindow) ;
      ReleaseDC (hDlg, hdcDlg) ;   
      return showSuccess;
      }
      

  10.   

    to  hhjdk967(汉靖):
    BOOL ddbShow(HWND hDlg,PTSTR lpFileName,int index,int idWindow)
    hDlg是窗口的handle,我现在要在一个静态文本框上面显示就应该是这个static text的句柄?
    lpFileName是图片名,要不要包含路径?
    index什么意思?
    idWindow怎么获得?
    谢谢。
      

  11.   

    to  yes555(a ~tu);
    你说的是OnPaint() ?哪有什么参数啊?
      

  12.   

    OnPaint()
    这个涵数里的CPaintDC dc(this)这个也以用的.
      

  13.   

    用那个的话错误提示:
    cannot convert parameter 1 from 'class CPaintDC' to 'class CDC *'
    我实在太菜
      

  14.   

    用GetDlgItem(hwnd,Itemid)
    hwnd是当前窗口的handle,Itemid是static的id