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

相关推荐
Tim_101 小时前
【LeetCode】338、比特位计数
c++·算法·leetcode
程序员AlbertTu2 小时前
# Mantissa 使用教程 — Python 版与 C++ 版
c++·python·数值运算
Lazionr2 小时前
多态:从多种形态到运行时绑定
开发语言·c++
别动我齐刘海2 小时前
ROS2 Jazzy + C++ 实战路线——ros2_control
c++·人工智能·python·opencv·机器学习·机器人·github
All for pursuit.3 小时前
【栈-4】739.每日温度
数据结构·c++·算法·leetcode
码匠许师傅3 小时前
【C++三方组件】glog:Google 出品的 C++ 日志库
c++
Lazionr3 小时前
二叉搜索树:从树形结构到高效查找
开发语言·c++
此生决int3 小时前
深入理解C++系列(21)——异常
开发语言·c++
曼巴UE53 小时前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
All for pursuit.3 小时前
【栈-5】84.柱状图中最大的矩形
数据结构·c++·算法·leetcode