C++的Win32项目绘图程序绘制的图形变白了

我用C++Win32绘图程序绘制了一个会动的小球,原理是不断改变小球的坐标并刷新。但我绘制的小球的颜色是红色,刚开始的时候小球是红色的没错,但运行一会儿后就自己变成白色了... 我用C++Win32绘图程序绘制了一个会动的小球,原理是不断改变小球的坐标并刷新。但我绘制的小球的颜色是红色,刚开始的时候小球是红色的没错,但运行一会儿后就自己变成白色了,这是怎么回事?我觉得是跟显示内存的释放有关,请有关高手支招,感激不尽! 展开
 我来答
百度网友c7e1877
2016-04-30 · TA获得超过4670个赞
知道大有可为答主
回答量:4996
采纳率:81%
帮助的人:1452万
展开全部
这种2D动画绘图都会使用“双缓冲”的技巧以解决闪烁问题,拿GDI说,就是建立一个和屏幕DC兼容的memDC,然后再建立一个兼容的Bitmap,MemDC选中这个Bitmap:
HDC memDC = CreateCompatibleDC ( hDC );
HBITMAP memBM = CreateCompatibleBitmap ( hDC, nWidth, nHeight );
SelectObject ( memDC, memBM );
然后在每个动画更新 Time Step 中,你绘图(比如这里你画的红色小球以及在绘制球之前用的清屏)用的DC都是memDC,在所有绘图任务结束后,用 BitBlt 或 StretchBlt(StretchBlt 支持缩放)将 memDC 的屏幕内容拷贝到真实的屏幕DC上。
百度 GDI 双缓冲类,有人已经把上面这个机制封装成类了,你直接调用它使用就可以了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式