双缓冲技术解决图像闪屏问题
请教一下,利用VC的双缓冲技术解决打开磁盘上的图像闪屏如何解决!我打开的图片是采用打开DIB图像方式,而不是DDB,在线等候高手赐教,我的QQ是351927212,谢谢!...
请教一下,利用VC的双缓冲技术解决打开磁盘上的图像闪屏如何解决!我打开的图片是采用打开DIB图像方式,而不是DDB,在线等候高手赐教,我的QQ是351927212,谢谢!
展开
展开全部
您好,通常情况下,增加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则请参考上述代码修改,思路不变。希望我的回答可以帮到您。
新的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则请参考上述代码修改,思路不变。希望我的回答可以帮到您。
奥蕾达
2024-11-14 广告
2024-11-14 广告
透明LED显示屏顾名思义就是LED屏像玻璃一样具有透过光线的性质。具有50%到90%的通透率,面板厚度仅为10m左右,其高通透性与其特殊的材质、结构及安装方式紧密相关。 透明LED显示屏与LED玻璃屏都LED显示屏具透明特点透明LED显示屏...
点击进入详情页
本回答由奥蕾达提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询