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

相关推荐
ADDDDDD_Trouvaille1 天前
2026.2.21——OJ95-97题
c++·算法
Once_day1 天前
C++之《程序员自我修养》读书总结(4)
c语言·c++·编译和链接
tod1131 天前
C++核心知识点全解析(二)
开发语言·c++·面试经验
载数而行5201 天前
算法系列2之最短路径
c语言·数据结构·c++·算法·贪心算法
消失的旧时光-19431 天前
C++ 多线程与并发系统取向(五)—— std::atomic:原子操作与状态一致性(类比 Java Atomic)
开发语言·jvm·c++·并发
低频电磁之道1 天前
C++中预定义宏
开发语言·c++
fpcc1 天前
并行编程实战——CUDA编程的Warp Vote
c++·cuda
fpcc1 天前
并行编程实战——CUDA编程的Warp Shuffle
c++·cuda
xiaoye-duck1 天前
《算法题讲解指南:优选算法-滑动窗口》--13 水果成篮
c++·算法
智者知已应修善业1 天前
【冰雹猜想过程逆序输出】2025-4-19
c语言·c++·经验分享·笔记·算法