MFC图片控件Picture Control使用几个实例

1、按钮选择图片显示到控件上

  为方便说明,本例子用PictureTest创建一个对话框,类名CPictureTestDlg,在CPictureTestDlg.h文件中申明CImage image;CString strFilePath;CString strFileName;再从工具箱中托一个Picture控件到对话框中,ID为IDC_STATIC,调整适当大小后再添加一个添加图片的按钮。如下图所示:

     MFC图片控件(Picture、List Contrl)

为按钮添加事件处理程序代码:

 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 }
View Code

相关文章: