主题:求助 一个菜鸟编程概念问题
小格里高利
[专家分:0] 发布于 2008-05-23 16:32:00
在绘图中,实现位图显示和绘制时,创建一个基于CDC的内存绘制环境类,这是不是就是"双缓冲"技术?
回复列表 (共3个回复)
沙发
p1s [专家分:4100] 发布于 2008-05-23 16:40:00
CDC应该是在内存里而不是直接操作显存的。然后就是先把图像写到内存里,写完了再刷新,这样画面就不会闪烁。
板凳
小格里高利 [专家分:0] 发布于 2008-05-23 21:32:00
那这种方法是不是就叫"双缓冲"技术?要不是,"双缓冲"技术的原理是什么,怎么实现?
3 楼
龙·之骄 [专家分:330] 发布于 2008-05-23 23:40:00
双缓冲?以前用Java写手机游戏的时候用到过,之前用VC的时候也用过类似的思想,看来名字都是一样的呀。
个人并不是很同意1楼朋友的观点。如果想用双缓冲的话,需要自己创建一个内存DC,它是向内存中的Bitmap写入而不是向设备中写。等到你觉得在内存中把图像画好了,再把它写入到显存中。具体代码如下。其中pDC指向设备绘图DC,memDC就是内存DC了。
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(pDC,width,height);
memDC.SelectObject(bitmap);
//向memDC中绘图
pDC->BitBlt(0,0,width,height,&memDC,0,0,SRCCOPY);
我来回复