在vc中进行绘图过程处理时,如果图形刷新很快,
经常出现图形闪烁的现象。利用先在内存绘制,然后
拷贝到屏幕的办法可以消除屏幕闪烁,具体的方法是先在内存
中创建一个与设备兼容的内存设备上下文,也就是开辟一快内
存区来作为显示区域,然后在这个内存区进行绘制图形。在绘制完成后利用
bitblt函数把内存的图形直接拷贝到屏幕上即可。
具体的代码实现为:
(1)创建内存区域
cdc* pmem=new cdc;
cbitmap* pbmp=new cbitmap;
cbitmap* poldbmp;
cdc* pdc=getdc();
crect recttemp;为绘图区域
pmem->createcompatibledc(pdc);
pbmp->createcompatiblebitmap(pdc, recttemp.width(), recttemp.height());
poldbmp=pmem->selectobject(pbmp);
(2)进行图形绘制
pmem->lineto(...); 进行绘图处理
(3)拷贝到屏幕
pdc->bitblt(recttemp.left,recttemp.top,recttemp.width(),recttemp.height(),pmem,0,0,srccopy);
pmem->selectobject(poldbmp);
pbmp->deleteobject() ;
pmem->deletedc();