为什么用了双缓冲绘图,图像还是闪烁?

发布网友 发布时间:2022-04-21 03:59

我来回答

1个回答

热心网友 时间:2022-06-17 21:10

您好,通常情况下,增加1个DC可以解决闪屏问题。
新的DC用于在后缓冲区中绘图。
再用CDC::BitBlt()这类函数将新DC的内容绘制到窗口绘图区的DC,通常这样就可以解决闪屏了。

假设您在MFC视图类中使用OnDraw函数绘图,示例代码如下:
///////////////////////////////////begin///////////////////////////////////////////////////////////////
void 您的视图类名称::OnDraw(CDC* pDC)
{
...
...
//新DC
CDC MemDC;

//创建与原Dc兼容的DC,用于后台绘图
MemDC.CreateCompatibleDC(/*这里的参数是窗口绘图区的DC指针*/ pDC);

/*在MemDC中绘制DIB图像*/
...
...
//调用CDC::BitBlt()函数,将MemDC中的内容绘制到pDC
pDC->BitBlt(..., &MemDC, ...);
...
...
}
////////////////////////////////////////////////////end//////////////////////////////////////////////////////////////////////////////////////////
如上示例是使用MFC解决问题的思路,如果您直接调用的是Windows API则请参考上述代码修改,思路不变。希望我的回答可以帮到您。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com