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

相关推荐
江屿风几秒前
【C++笔记】vector流食般投喂
开发语言·c++·笔记
CHHH_HHH2 分钟前
【C++】红黑树:比AVL树更实用的平衡二叉搜索树
开发语言·数据结构·c++·算法·stl
牛油果子哥q5 分钟前
【C++内存对齐与结构体填充】C++内存对齐与结构体填充深度精讲:对齐规则、结构体内存大小计算、填充冗余、笔试真题与工程优化方案
开发语言·c++
Lazionr7 分钟前
基础算法 | 模拟算法练习
c++·算法
奶粉不够18 分钟前
用SDL3完成一个扫雷
c++
feng_you_ying_li23 分钟前
Linux 之线程封装,线程的同步与互斥,互斥锁的介绍
linux·c++·算法
星恒随风24 分钟前
C++入门(二):函数重载、引用、const引用和 inline 内联函数
开发语言·c++·笔记·学习
basketball61630 分钟前
C++ 高级编程:1. 多线程基本操作
开发语言·c++
十五年专注C++开发30 分钟前
std::vector<T>到QVector<T>的数据复制方案
c++·vector·iterator模式·qvector
小欣加油12 小时前
leetcode3751 范围内总波动值I
java·数据结构·c++·算法·leetcode