1. 程式人生 > >在MFC Picture控制元件中顯示影象

在MFC Picture控制元件中顯示影象

CWnd*      m_pWnd;  

m_pWnd = this->GetDlgItem(IDC_PICTURE);  //  IDC_PICTURE此為Picture控制元件ID 

  //********* 載入影象 ********************

   CString filter;
    filter = "支援的影象(*.bmp;*.tif;*.jpg)|*.bmp;*.tif;*.jpg||";
    CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter);

    //**預設載入影象時路徑,此處可不做處理  

    CString  strForlder=TEXT("d:// "); 
    dlg.m_ofn.lpstrInitialDir = strForlder;    

   //**

    if (dlg.DoModal() == IDOK)
    {     
        try{

            // 此類方法即便實現體在OnPaint()外,Picture也可以顯示影象,已經過驗證
            CRect   rect;
            CImage  image;
            image.Load(dlg.GetPathName().GetBuffer());
            wndDraw->GetWindowRect(&rect);  //將客戶區選中到控制元件表示的矩形區域內  
            CWnd *pWnd = NULL;
            pWnd = wndDraw;//獲取控制元件控制代碼  
            pWnd->GetClientRect(&rect);//獲取控制代碼指向控制元件區域的大小  
            CDC *pDc = NULL;
            pDc = pWnd->GetDC();//獲取picture的DC  
            pDc->SetStretchBltMode(STRETCH_HALFTONE);
            image.Draw(pDc->m_hDC, rect);//將
            ReleaseDC(pDc);

        }
         catch(CException *e)//&e
        {
             TCHAR   szError[1024];   

             e->GetErrorMessage(szError,1024);   //  e.GetErrorMessage(szError,1024); 
             ::AfxMessageBox(szError); 
        } 

    }