| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 562 人关注过本帖
标题:关于picture 控件显示图片的问题,请教!
只看楼主 加入收藏
zyanming2002
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-8-4
结帖率:66.67%
收藏
已结贴  问题点数:16 回复次数:2 
关于picture 控件显示图片的问题,请教!
void CCapture::OnPhoto()
    CCameraDlg * pCDlg = new CCameraDlg();// 在这个对话框中已经取得了pCDlg->m_cvvImage,类型为:CvvImage
    pCDlg->DoModal();

    int nID = IDC_PHOTO;
   
    // TODO: Add your message handler code here and/or call default
    CDC* pDC = GetDlgItem(nID) ->GetDC();        // 获得显示控件的 DC
    HDC hDC = pDC ->GetSafeHdc();                // 获取 HDC(设备句柄) 来进行绘图操作
   
    CRect rect;
    GetDlgItem(nID) ->GetClientRect( &rect );
   
    CvvImage cimg;
    cimg.CopyOf(pCDlg->m_cvvImage);
    cimg.DrawToHDC(hDC,&rect);
    ReleaseDC(pDC);
}

现在的问题是在主对话框的picture中显示照片,但照片一闪就消失了,请问是什么原因呢?
程序是基于MFC 开发的SDI程序,在view类里实现了OnEraseBkgnd(),是这里的问题吗?
BOOL CFingerView::OnEraseBkgnd(CDC* pDC)
{
    // TODO: Add your message handler code here and/or call default
    //直接使用资源id,图形可伸缩,修改为背景图片可随窗口客户区大小伸缩,图片偏大,失真
        CBitmap bmp;  
        HDC   hMemDC=CreateCompatibleDC(pDC->m_hDC);   
        bmp.LoadBitmap(IDB_BITMAP3);  
        BITMAP   bm;   
        bmp.GetBitmap(&bm);   
        SelectObject(hMemDC,HBITMAP(bmp));
        CRect   rc;   
        GetClientRect(rc);   
        StretchBlt(pDC->m_hDC,0,0,rc.Width(),rc.Height(),hMemDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);   
        bmp.DeleteObject();
        
    //return CView::OnEraseBkgnd(pDC);
    return TRUE;
}
搜索更多相关主题的帖子: default message 对话框 
2013-08-11 14:06
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:16 
别在OnEraseBkgnd做,在OnPaint里面做图片显示吧。

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-08-11 18:02
zyanming2002
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-8-4
收藏
得分:0 
我改到OnPaint里了,还是一闪而过呀!
void Capture::OnPaint()
{
    //CPaintDC dc(this); // device context for painting
    GetDlgItem(IDC_PHOTO)->ModifyStyle ( SS_TYPEMASK, SS_OWNERDRAW );
   
   
    // TODO: Add your message handler code here
    int nID = IDC_PHOTO;
   
    // TODO: Add your message handler code here and/or call default
    CDC* pDC = GetDlgItem(nID) ->GetDC();        // 获得显示控件的 DC
    HDC hDC = pDC ->GetSafeHdc();                // 获取 HDC(设备句柄) 来进行绘图操作
   
    CRect rect;
    GetDlgItem(nID) ->GetClientRect( &rect );
   
    CvvImage cimg;
    cimg.CopyOf(m_cvvImage);
    cimg.DrawToHDC(hDC,&rect);
    ReleaseDC(pDC);
    // Do not call CDialog::OnPaint() for painting messages
    CDialog::OnPaint();
}
2013-08-11 20:46
快速回复:关于picture 控件显示图片的问题,请教!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052409 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved