zealerww 2016-03-15 08:05 采纳率: 0%
浏览 2193

picture control如何重绘

突然接触mfc,以前没用过,不知道该如何改现有的程序。picture control中的图被遮挡或者最小化就消失。下面是打开文件后显示的程序。该如何重绘,请详解。

 void CImageProcessDlg::OnImgFileOpen()
{
    // TODO: 在此添加控件通知处理程序代码

    pwnd1 = GetDlgItem(IDC_IMG_STATIC1);
    pDC1 = pwnd1->GetDC();
    hDC1 = pDC1->GetSafeHdc();


    pwnd2 = GetDlgItem(IDC_IMG_STATIC2);
    pDC2 =pwnd2->GetDC();
    hDC2= pDC2->GetSafeHdc();

    GetDlgItem(IDC_IMG_STATIC2)->GetClientRect(&rect2);
    GetDlgItem(IDC_IMG_STATIC1)->GetClientRect(rect1); 

    CString strFilter = _T("Files(*.bmp;*.jpg;*.png)|*.bmp;*.jpg;*.png|All files(*.*)|*.*||");
    CFileDialog dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST, strFilter, NULL); 

    if (dlg.DoModal() == IDOK)                      
    {
        SrcPath = dlg.GetPathName();
        m_ImgFileName = dlg.GetFileTitle();
        m_ImgExtName = dlg.GetFileExt();
    }   
    else
    {
        return;
    }

    if(SrcPath=="") //判断文件路径是否为空
    {
        MessageBox(_T("请重新选择你要处理的图像!"));
        return;
    }

    m_InImage = cvLoadImage(CT2CA(SrcPath));
    m_OutImage = cvCreateImage( cvGetSize(m_InImage), IPL_DEPTH_8U, 3 );


    cimg.CopyOf(m_InImage);
    cimg.DrawToHDC(hDC1, &rect1);

    //处理图像
    process(m_InImage, m_OutImage);

    oimg.CopyOf(m_OutImage_show);
    oimg.DrawToHDC(hDC2, &rect2);

}
  • 写回答

1条回答 默认 最新

  • lx624909677 2016-03-15 08:32
    关注

    把绘图代码放到OnPaint函数里

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!