1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c语言游戏画面闪烁怎么解决 双缓冲解决VC++绘图时屏幕闪烁

c语言游戏画面闪烁怎么解决 双缓冲解决VC++绘图时屏幕闪烁

时间:2023-01-04 19:37:56

相关推荐

c语言游戏画面闪烁怎么解决 双缓冲解决VC++绘图时屏幕闪烁

通常来说程序根据需要调用Invalidate(FALSE)使窗口客户区无效引起重绘,然后在窗口OnPaint函数(基于文档视图的程序则是OnDraw)中进行稳定绘图就行了。但是,我们在OnPaint中进行多重绘制(画背景、棋盘、棋子等),前后绘制的反差造成了闪烁现象。以前知道Java中解决屏幕闪烁问题是用双缓冲的方法,现在发现在vc++中也是可以这么做的。简单来说,双缓冲就是先把需要绘制的东西全部一口气画在内存中,最后把内存中的数据搬到屏幕上显示。

最近做中国象棋,绘制界面时遇到些问题,绘图过程中屏幕闪烁,估计都会想到利用双缓冲来解决问题,但查了下网上双缓冲的资料,发现基本是MFC的,转化为VC++后,大概代码如下:

void DrawBmp(HDC hDC, HBITMAP hBitmap)

{

HDC hdcMEM; //用于缓冲作图的内存DC

HBITMAP bmp; //内存中承载临时图象的位图

HANDLE hOld;

hdcMEM = CreateCompatibleDC(hDC);//依附窗口DC创建兼容内存DC

bmp = CreateCompatibleBitmap(hDC, 100, 100); //创建与hDC环境相关的设备兼容的位图

SelectObject(hdcMEM, bmp);

hOld = SelectObject(hdcImage, hBitmap);

StretchBlt(hDC, 0, 0, 100, 100, hdcMEM, 0, 0, 100, 100, SRCCOPY);

SelectObject(hdcImage, hOld);

DeleteObject(hOld);</

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。