MFC显示图像在Picture控件上 MFC——CDC

    //选择图片
    CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this);
    //打开文件选择窗体
    if (fileDlg.DoModal() == IDCANCEL) return; //如果点击“取消”按钮,直接退出
    //获取图片路径(包含名称)
    CString strFilePath = fileDlg.GetPathName();//既有路径又有文件名,如D:/lena.jpg
    //CString strFileName = fileDlg.GetFileName();//只获取文件名,如lena.jpg
    //判断路径不为空
    if (strFilePath == _T(""))
    {
        return;
    }
    //使用CImage的Load、Draw函数显示图像
    CImage image;
    image.Load(strFilePath);

    //int x = image.GetWidth(); //学习下CImage的属性,无其他意义
    //int y = image.GetHeight();

    //获取控件的矩形
    CRect rectControl;  //控件矩形对象
    CWnd  *pWnd = GetDlgItem(IDC_IMAGE); //Picture Control的ID为IDC_IMAGE
    pWnd->GetClientRect(&rectControl);

    //以控件为画布,在其上画图
    CDC *pDc = GetDlgItem(IDC_IMAGE)->GetDC();
    SetStretchBltMode(pDc->m_hDC, STRETCH_HALFTONE);//绘图前必须调用此函数(设置缩放模式),否则失真严重

    //画图(以下两种方法都可)
    //image.StretchBlt(pDc->m_hDC, rectPicture, SRCCOPY); //将图片绘制到Picture控件表示的矩形区域
    image.Draw(pDc->m_hDC, rectControl);                //将图片绘制到Picture控件表示的矩形区域

    image.Destroy();
    pWnd->ReleaseDC(pDc);

【参考】

MFC——CDC

https://blog.csdn.net/u013919153/article/details/99407029

猜你喜欢

转载自www.cnblogs.com/xixixing/p/12678709.html