回 帖 发 新 帖 刷新版面

主题:求助 一个菜鸟编程概念问题

在绘图中,实现位图显示和绘制时,创建一个基于CDC的内存绘制环境类,这是不是就是"双缓冲"技术?

回复列表 (共3个回复)

沙发

CDC应该是在内存里而不是直接操作显存的。然后就是先把图像写到内存里,写完了再刷新,这样画面就不会闪烁。

板凳

那这种方法是不是就叫"双缓冲"技术?要不是,"双缓冲"技术的原理是什么,怎么实现?

3 楼

双缓冲?以前用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);

我来回复

您尚未登录,请登录后再回复。点此登录或注册