如何解决绘图过程中的闪烁?

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 leisureful 的 blog

 

 在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();

本文关键:绘图 VC
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top