MFC使用双缓冲实现绘制字符串防闪烁

有时在性能比较低的操作系统上实现绘制文字实时变化时,会出现字体闪烁问题,下面通过双缓冲技术,先的要显示的文字绘制到缓冲区,然后再将显示出来,代码如下:

CClientDC dc(this);

CDC MemDC;

MemDC.CreateCompatibleDC(&dc);

CFont * pold_font=MemDC.SelectObject(&Font2);

CSize txtpot=MemDC.GetTextExtent(strMsg);

int x = 341-txtpot.cx;

int y = 308;

MemDC.SetBkColor(RGB(255,255,255));

MemDC.SetTextColor(RGB(0,0,0));

CBitmap MemBitmap;

MemBitmap.CreateCompatibleBitmap(&dc,txtpot.cx,txtpot.cy);

CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);

MemDC.TextOutA(0,0,strMsg);

MemDC.SelectObject(pold_font);

dc.BitBlt(x,y,txtpot.cx,txtpot.cy,&MemDC,0,0,SRCCOPY);

MemBitmap.DeleteObject();

MemDC.DeleteDC();

技术交流请加群:996775415

相关推荐
John_ToDebug4 小时前
浏览器扩展延迟加载优化实战:如何让浏览器启动速度提升50%
c++·chrome·windows
是娇娇公主~4 小时前
C++ 中 std::deque 的原理?它内部是如何实现的?
开发语言·c++·stl
luanma1509806 小时前
PHP vs C++:编程语言终极对决
开发语言·c++·php
csdn_aspnet6 小时前
C/C++ 两个凸多边形之间的切线(Tangents between two Convex Polygons)
c语言·c++·算法
yangtuoni9 小时前
vscode调试C++程序
c++·ide·vscode
m0_587958959 小时前
C++中的命令模式变体
开发语言·c++·算法
2501_924952699 小时前
代码生成器优化策略
开发语言·c++·算法
xushichao198910 小时前
C++动态链接库开发
开发语言·c++·算法
fengenrong10 小时前
20260324
c++·算法
qq_4160187210 小时前
设计模式在C++中的实现
开发语言·c++·算法