首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在OnPaint()中设置的背景怎样才能不闪烁解决方法

2012-06-05 
在OnPaint()中设置的背景怎样才能不闪烁程序是在win32下写的代码如下:void CWindow::OnPaint ()//画图{CRe

在OnPaint()中设置的背景怎样才能不闪烁
程序是在win32下写的
代码如下:
void CWindow::OnPaint ()//画图
{
  CRect rect;
CPaintDC dc(this);//建立响应WM_PAINT的DC
CDC *md=new CDC;//新建暂存DC md
CBitmap *bitmap=new CBitmap;//建立一个CBitmap位图对象
GetClientRect(&rect);//取得操作窗口大小
md->CreateCompatibleDC(&dc);//将md转换成与dc兼容的DC
bitmap->m_hObject=(HBITMAP)::LoadImage(NULL,"spaceodyssey.bmp",IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE);
md->SelectObject(bitmap);
dc.BitBlt(0,0,rect.right,rect.bottom,md,0,0,SRCCOPY);
if(md) delete md;
if(bitmap) delete bitmap;
Draw(dc);
}

网上看到可以用双缓冲使背景不闪烁,但我还是不明白怎么弄,请高人赐教~~~

[解决办法]
我想基本的思路大概是:
屏幕内容有两个缓存,一个用于前台显示,另一个用于后台绘制。
所有绘图都绘制在后台的缓存中,绘制过程结束后,交换两个缓存的功能。
将原先后台的用于前台显示,原先前台的变成后台绘制
重复以上过程。
由于后台绘制期间前台图像显示不受影响,而切换的时间相比绘制时间要少的多,所以感觉不到闪烁。

热点排行