MFC绘制图形时全屏幕刷新会很闪

MFC绘制图形时全屏幕刷新会很闪,用的是InvalidateRect(&rc,FALSE); 网上那些双缓冲什么的看不懂,求大神帮助

4个回答

使用双缓冲绘图或者使用InvalidateRect局部刷新重绘。再或者考虑使用Direct2D。

kate_music
kate_music 回复G-Point: 遇到了双缓冲的麻烦,能不能帮我看看代码?
大约 5 年之前 回复
BALDOOR
颓废而优雅的绅士 回复kate_music: SDK和MFC只是一个建立应用程序的方式而已,绘图性能与图形库有关,就像SDK里面的HDC或者MFC的CDC类就是GDI(微软的一个基本图形库)
大约 5 年之前 回复
kate_music
kate_music 回复G-Point: SDK和MFC哪个绘图性能比较好一点?
大约 5 年之前 回复
BALDOOR
颓废而优雅的绅士 如果像你所说,不断刷新,改变位图位置,比较推荐使用Direct2D。因为这个比GDI绘图性能要强。网上Direct2D贴图的例子很多。Windows SDK Sample里也有相应的例子,就是在WM_PAINT里绘完图后再调用InvalidateRect(hWnd,0,FALSE);
大约 5 年之前 回复
kate_music
kate_music 回复G-Point: 代码太长了= =而且有位图什么的
大约 5 年之前 回复
BALDOOR
颓废而优雅的绅士 建议你把绘图代码贴出来,这样比较容易为你解答。
大约 5 年之前 回复
kate_music
kate_music 额。。如果用局部重绘的话,那部分要一直刷新不会闪吗?
大约 5 年之前 回复

双缓冲,说白了就是使用内存DC,这是解决刷新闪的根本之道。
静下心来,认真看看。其实,就是比一般的绘制多了内存 DC 的使用,先画在内存 DC 上,最后一次性刷新到屏幕上。

91program
91program 回复kate_music: 类似,双缓冲的代码,网上很多。
大约 5 年之前 回复
kate_music
kate_music 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(); 这样吗?
大约 5 年之前 回复

你绘制的代码是怎么写的?

kate_music
kate_music 也不是绘制,就是放位图,不断刷新,改变位图位置
大约 5 年之前 回复

同意一楼的回答,界面直接刷新到窗口慢一些,多次刷新一小部分来合成整个界面刷新,看起来的效果就是“闪”。
双缓冲是将内容绘制到内存里,快也看不见,只是完成整个界面后一次性刷新到屏幕,屏幕上看只刷了一次。
另外,MFC是很老的技术,可以尝试一下更加先进的 .net wpf 框架

KnightMobile
新买手机号竟然也是程序员用过 回复kate_music: 谁叫你要去学这东西呢 ^^
大约 5 年之前 回复
kate_music
kate_music 回复KnightMobile: 好复杂= =
大约 5 年之前 回复
KnightMobile
新买手机号竟然也是程序员用过 额,按快了,还有createbitmap、selectobject等函数。通过bitblt到不同的位置,来达到你要的效果。vista之后的系统,界面底层的图形渲染走direct x了,你这种需求可以用 d2d,他可以可以使用gdi的接口只是底层渲染变化了
大约 5 年之前 回复
BALDOOR
颓废而优雅的绅士 回复kate_music: 双缓冲不是MFC特有技术。(Win32)SDK也可以的。
大约 5 年之前 回复
KnightMobile
新买手机号竟然也是程序员用过 应该是 gdi 双缓冲,mfc大部分是sdk的封装,对应sdk的gdi函数要用到,createcompatibledc
大约 5 年之前 回复
kate_music
kate_music 唉,那个还没教,只教了sdk和mfc,可是都闪,mfc有双缓冲技术,sdk怎么解决呢?还有,我是一直刷新的,因为时刻都要改变位图位置,这个怎么办?
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐