在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);
}
}