mfc中的onpaint函数中绘图以后不要求图片闪烁

haishi在onpaint函数中让图片移动的时候不要闪烁,要用双缓存,就是把图片先添加到内存缓冲区中,然后就可以直接bitblt到窗口中,具体的代码不会写,希望高手给个... haishi在onpaint函数中让图片移动的时候不要闪烁,要用双缓存,就是把图片先添加到内存缓冲区中,然后就可以直接bitblt到窗口中,具体的代码不会写,希望高手给个代码吧! 展开
 我来答
匿名用户
2013-05-31
展开全部
首先,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint双缓冲的实现:在OnDraw(CDC *pDC)中:
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//绘图
MemDC.MoveTo(……);
MemDC.LineTo(……);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
小呆瓜
推荐于2017-07-25 · 知道合伙人金融证券行家
小呆瓜
知道合伙人金融证券行家
采纳数:2850 获赞数:12626
从事C++行业多年

向TA提问 私信TA
展开全部
不需要那么复杂,直接用InvalidateRect()或UpdateWindow()实时更新窗口就可以了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-31
展开全部
搜一下,例子很多的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式