//綁定button的事件處理函數
void CloadfileDlg::OnBnClickedButton1() { //進度條置為零 //CProgressCtrl *prgs = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS); //prgs->SetPos(0); //選擇圖片 CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this); fileDlg.DoModal(); //獲取圖片路徑和圖片名稱 strFilePath = fileDlg.GetPathName(); strFileName = fileDlg.GetFileName();
//判斷路徑不為空 if (strFilePath == _T("")) { return; } image.Load(strFilePath);
//以下兩個矩形主要作用是,獲取對話框上面的Picture Control的width和height,
//並設置到圖片矩形rectPicture,根據圖片矩形rectPicture對圖片進行處理,
//最后繪制圖片到對話框上Picture Control上面 CRect rectControl; //控件矩形對象 CRect rectPicture; //圖片矩形對象
int x = image.GetWidth(); int y = image.GetHeight();
//Picture Control的ID為IDC_IMAGE CWnd *pWnd = GetDlgItem(IDC_IMAGE); pWnd->GetClientRect(rectControl); CDC *pDc = GetDlgItem(IDC_IMAGE)->GetDC(); SetStretchBltMode(pDc->m_hDC, STRETCH_HALFTONE); rectPicture = CRect(rectControl.TopLeft(), CSize((int)rectControl.Width(), (int)rectControl.Height())); ((CStatic*)GetDlgItem(IDC_IMAGE))->SetBitmap(NULL); //以下兩種方法都可繪制圖片 //image.StretchBlt(pDc->m_hDC, rectPicture, SRCCOPY); //將圖片繪制到Picture控件表示的矩形區域 image.Draw(pDc->m_hDC, rectPicture); //將圖片繪制到Picture控件表示的矩形區域 image.Destroy(); pWnd->ReleaseDC(pDc); }
運行結果:點擊選擇圖片按鈕,選擇圖片后,圖片在Picture Control上展示

