MFC中使用Invalidate()函数图像就会闪烁,这个怎么解决?

我的ondraw函数是:voidCSnowflakesView::OnDraw(CDC*pDC){ CSnowflakesDoc*pDoc=GetDocumen... 我的ondraw函数是:void CSnowflakesView::OnDraw(CDC* pDC){ CSnowflakesDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);CDC MemDC;MemDC.CreateCompatibleDC(pDC);CBitmap *pOldBitmap=MemDC.SelectObject(&m_Bitmap);BITMAP bm;m_Bitmap.GetObject(sizeof(BITMAP),&bm);pDC->BitBlt(snow1x,snow1y,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);MemDC.SelectObject(pOldBitmap);}Timer函数是:void CSnowflakesView::OnTimer(UINT nIDEvent) {       CRect rect;    GetClientRect(rect); if(nIDEvent==1) {  snow1x+=rand()%2;  snow1x-=rand()%5;  snow1y+=4;  if(snow1y >= rect.bottom)  {snow1y = 0;}  if(snow1x <= rect.left)   snow1x = rect.right-20;  if(snow1x >= rect.right)   snow1x = 0;    Invalidate();  }  CView::OnTimer(nIDEvent);}在用Invalidate()函数刷新时移动的图像就会闪烁,这个怎么解决?不要那些网上的Invalidate(flase),Invalidateract()之类的,这些我都试过了,都没用,将OnEraseBkgnd中设为returne true后不会闪烁,但是那个轨迹却不会刷新。请说具体点,我是新手,不是很会。能解决问题的我再加分! 展开
 我来答
南昌1992
2011-11-05 · 超过31用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:72.8万
展开全部
这个函数的用途就是刷新窗体吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
敲響鍵盤
2011-11-05 · TA获得超过463个赞
知道小有建树答主
回答量:615
采纳率:0%
帮助的人:290万
展开全部
双缓冲加上局部刷新,能达到你的要求
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式