在对话框里的一个Static控件里绘图闪烁

JasonCharlesBourne 2013-05-07 09:44:09
void CMyDialog::OnPaint()
{
//IDC_STC_CANVAS是一大块CStatic控件
CWnd* _pWnd = GetDlgItem(IDC_STC_CANVAS);
CDC* _pDC = _pWnd->GetDC();
CDC* _pMemDC=new CDC;
_pMemDC->CreateCompatibleDC(NULL);
CBitmap* _pMemDCbmp=new CBitmap;
_pMemDCbmp->CreateCompatibleBitmap(_pDC, m_rectCoor.Width(),m_rectCoor.Height());
CBitmap* _pOldBitmap = _pMemDC->SelectObject(_pMemDCbmp);
.........
.........
_pDC->BitBlt(把_pMemDC复制过来);
delete _pMemDCbmp;
delete _pMemDC;
}

然后就用_pMemDC绘图,绘完之后再绘的是一条曲线,我要通过点击曲线对曲线进行编辑,还要通过OnMouseMove对曲线进行编辑,这时候界面就闪得十分厉害,这是什么呢?我用了双缓存呀为什么还闪得厉害,和没用一样
...全文
220 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-06-29
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
sumos 2013-05-07
  • 打赏
  • 举报
回复
引用 5 楼 pig357 的回复:
添加自定义cstatic控件,在里面绘图要好些吧
++
liuli7786 2013-05-07
  • 打赏
  • 举报
回复
引用 4 楼 iloveiverson 的回复:
我要在OnMouseMove根据当前的Point来重新绘制曲线,所以会调用Invalidate()来重绘,这时候只要鼠标一动就闪得厉害。。。
这肯定会闪!你都不如这样:鼠标按下并移动的时候把Point都放到一个list里,当松开鼠标的时候进行绘制曲线。
pig357 2013-05-07
  • 打赏
  • 举报
回复
添加自定义cstatic控件,在里面绘图要好些吧
JasonCharlesBourne 2013-05-07
  • 打赏
  • 举报
回复
我要在OnMouseMove根据当前的Point来重新绘制曲线,所以会调用Invalidate()来重绘,这时候只要鼠标一动就闪得厉害。。。
JasonCharlesBourne 2013-05-07
  • 打赏
  • 举报
回复
引用 1 楼 liuli7786 的回复:
双缓冲不是这么用的,用法错了!!应该这样: CDC* _pDC = _pWnd->GetDC(); CDC* _pMemDC = NULL; _pMemDC->CreateCompatibleDC(_pDC);
CDC* _pMemDC = new CDC; _pMemDC->CreateCompatibleDC(_pDC);
JasonCharlesBourne 2013-05-07
  • 打赏
  • 举报
回复
引用 1 楼 liuli7786 的回复:
双缓冲不是这么用的,用法错了!!应该这样: CDC* _pDC = _pWnd->GetDC(); CDC* _pMemDC = NULL; _pMemDC->CreateCompatibleDC(_pDC);
改成你这样还是一样会闪的~~
liuli7786 2013-05-07
  • 打赏
  • 举报
回复
双缓冲不是这么用的,用法错了!!应该这样: CDC* _pDC = _pWnd->GetDC(); CDC* _pMemDC = NULL; _pMemDC->CreateCompatibleDC(_pDC);
u010588063 2013-05-07
  • 打赏
  • 举报
回复
你用双缓冲绘图,然后把所有的对象定义成成员变量,OnPaint里面只用moveto,lineto,试一试看,我的是Vs2010,我就是这么做的
JasonCharlesBourne 2013-05-07
  • 打赏
  • 举报
回复
引用 5 楼 pig357 的回复:
添加自定义cstatic控件,在里面绘图要好些吧
那样就不闪了吗?如果那样的话它还要和对话框通讯,好麻烦!不能直接在对话框中画吗

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧