MFC图片控件Picture Control使用几个实例
1、按钮选择图片显示到控件上
为方便说明,本例子用PictureTest创建一个对话框,类名CPictureTestDlg,在CPictureTestDlg.h文件中申明CImage image;CString strFilePath;CString strFileName;再从工具箱中托一个Picture控件到对话框中,ID为IDC_STATIC,调整适当大小后再添加一个添加图片的按钮。如下图所示:
为按钮添加事件处理程序代码:
1 void CPictureTestDlg::OnBnClickedButton1() 2 { 3 // TODO: 在此添加控件通知处理程序代码 4 //选择图片 5 CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("imageFiles(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this); 6 fileDlg.DoModal(); 7 //获取图片路径和图片名称 8 strFilePath = fileDlg.GetPathName(); 9 strFileName = fileDlg.GetFileName(); 10 //判断路径不为空 11 if (strFilePath == _T("")) 12 { 13 return; 14 } 15 image.Load(strFilePath); 16 //以下两个矩形主要作用是,获取对话框上面的Picture Control的width和height, 17 //并设置到图片矩形rectPicture,根据图片矩形rectPicture对图片进行处理, 18 //最后绘制图片到对话框上Picture Control上面 19 CRect rectControl; //控件矩形对象 20 CRect rectPicture; //图片矩形对象 21 int x = image.GetWidth(); 22 int y = image.GetHeight(); 23 //Picture Control的ID为IDC_IMAGE 24 CWnd* pWnd = GetDlgItem(IDC_STATIC); 25 pWnd->GetClientRect(rectControl); 26 CDC* pDc = GetDlgItem(IDC_STATIC)->GetDC(); 27 SetStretchBltMode(pDc->m_hDC, STRETCH_HALFTONE); 28 rectPicture = CRect(rectControl.TopLeft(), CSize((int)rectControl.Width(), (int)rectControl.Height())); 29 ((CStatic*)GetDlgItem(IDC_STATIC))->SetBitmap(NULL); 30 //以下两种方法都可绘制图片 31 //image.StretchBlt(pDc->m_hDC, rectPicture, SRCCOPY); //将图片绘制到Picture控件表示的矩形区域 32 image.Draw(pDc->m_hDC, rectPicture); //将图片绘制到Picture控件表示的矩形区域 33 image.Destroy(); 34 pWnd->ReleaseDC(pDc); 35 }