用双缓存绘制方法减少绘图时的闪屏

原创 2007年10月05日 18:40:00

CClientDC dc(this);

CRect rClient;
GetClientRect(&rClient);

CBitmap MemBmp;
MemBmp.CreateCompatibleBitmap(&dc, rClient.Width(), rClient.Height());

CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
CBitmap* pOldMemBmp = MemDC.SelectObject(&MemBmp);

CDC bmpDC;
bmpDC.CreateCompatibleDC(&dc);

CBitmap* pOldBitmap = bmpDC.SelectObject(CBitmap::FromHandle(m_hBgBmp));
MemDC.BitBlt(rClient.left, rClient.top, m_SizeBg.cx, m_SizeBg.cy, &bmpDC, 0, 0, SRCCOPY);
bmpDC.SelectObject(pOldBitmap);
pOldBitmap = NULL;

CString sText = "……";
CFont font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfHeight = 14;
lf.lfWeight = FW_BOLD;
strcpy_s(lf.lfFaceName, LF_FACESIZE, "宋体");
font.CreateFontIndirect(&lf);
CFont* pOldFont = MemDC.SelectObject(&font);
MemDC.SetBkMode(TRANSPARENT);
MemDC.SetTextColor(RGB(255, 255, 255));
MemDC.TextOut(12, 8, sText);
MemDC.SelectObject(pOldFont);
font.DeleteObject();
DeleteDC(bmpDC);

dc.BitBlt(rClient.left, rClient.top, rClient.Width(), rClient.Height(), &MemDC, 0, 0, SRCCOPY);

MemDC.SelectObject(pOldMemBmp);
MemDC.DeleteDC();
MemBmp.DeleteObject(); 

 

MFC双缓存绘图实现

1. 前言 之前有一篇博客记录了如何在MFC的视图窗口上绘制图像,但是在后来的实际运行中出现了难以忍受的显示区域闪烁现象。产生这样问题的原因是频繁刷新视图窗口,且在当绘图操作复杂度越来越高的情况下越严...
  • m_buddy
  • m_buddy
  • 2016年11月17日 09:32
  • 1507

MFC VC 双缓冲绘图基本原理与实现,详细解释

MFC VC 双缓冲绘图基本原理与实现,详细解释 MFC做了一些时间了,不得不面对 的是在界面上画图的。 当然你可以直接搜索到能用的代码,并且基本能满足要求。不过这样总不是学习的态度。本着学习...
  • foreverhuylee
  • foreverhuylee
  • 2014年03月19日 18:10
  • 11916

qt之双缓冲绘图

转载自:https://wizardforcel.gitbooks.io/qt-beginning/content/22.html 导语 在前面一节中,讲述了如何实现简单的涂鸦板,这一次我们将...
  • baidu_33570760
  • baidu_33570760
  • 2017年05月12日 15:31
  • 919

C#双缓冲绘图方法大全

一、 画面闪烁问题与双缓冲技术 1.1 导致画面闪烁的关键原因分析: 1  绘制窗口由于大小位置状态改变进行重绘操作时   绘图窗口内容或大小每改变一次,都要调用Paint事件进行重...
  • wangmy1988
  • wangmy1988
  • 2017年07月03日 09:33
  • 328

使用Java实现双缓冲绘图

使用Java实现双缓冲绘图当我们使用AWT或Swing绘图时,如果绘制的图像刷新太快,会出现屏闪现象,如之前写的俄罗斯方块小游戏,屏闪现象就很明显。虽然这种闪烁不会给程序的效果造成太大的影响,但给程序...
  • zhliro
  • zhliro
  • 2015年05月17日 16:14
  • 4470

MFC绘制动态曲线,用双缓冲绘图技术防闪烁

MFC绘制动态曲线,用双缓冲绘图技术防闪烁   转自 http://zhy1987819.blog.163.com/blog/static/841427882011614103454335/ ...
  • skykingf
  • skykingf
  • 2014年03月06日 15:50
  • 9363

GDI+概述及双缓冲绘图技术

1.GDI概述及实例分析 1.1 GDI概述 GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。GDI使得用户无需关心具...
  • shenziheng1
  • shenziheng1
  • 2016年11月25日 15:53
  • 1303

双缓冲绘图以及OpenGL中的双缓冲支持

双缓冲绘图技术: 双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。 当数据量很大时,绘...
  • zh13544539220
  • zh13544539220
  • 2015年05月03日 12:15
  • 1213

VC双缓冲绘图技术介绍

VC双缓冲绘图技术介绍     双缓冲绘图,它是一种基本的图形图像绘图技术。首先,它在内存中创建一个与屏幕绘图区域一致的对象,然后将图形绘制到内存中的这个对象上,最后把这个对象上的图形数据一次性地...
  • oceanlucy
  • oceanlucy
  • 2015年07月10日 10:52
  • 2449

绘图(四,view之绘图双缓冲)

前言以下双缓冲的一些定义均是引用其他作者,不好意思,因为自己还没想出比较好的定义去描述双缓冲,同时也会引用一下其他作者的代码。关键最重要的是,我不认为,写别人已经写过的技术博客,是没有用的,也许对别人...
  • u013922681
  • u013922681
  • 2016年04月10日 12:37
  • 383
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用双缓存绘制方法减少绘图时的闪屏
举报原因:
原因补充:

(最多只允许输入30个字)