mfc 双缓存

复制代码
       CRect   rect; 
       //获取显示区域大小(该值为据对坐标,使用时需转换)
       GetWindowRect(rect);
    rect.SetRect(0, 0, rect.Width(), rect.Height());
//定义一个内存设备描述表对象(即后备缓冲区) CDC MemDC; //定义一个位图对象 CBitmap MemBitmap;
//建立与屏幕设备描述表(前端缓冲区)兼容的内存设备描述表句柄(后备缓冲区) MemDC.CreateCompatibleDC(NULL);
    
//这时还不能绘图,因为没有位图的设备描述表是不能绘图的 //下面建立一个与屏幕设备描述表(或者内存设备描述表)兼容的位图 MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
    
//将位图选入到内存设备描述表 //只有选入了位图的设备描述表才有地方绘图,画到指定的位图上 CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
    
//先用背景色将位图清除干净,RGB(0,0,0)设置自己的颜色RGB值 MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(0, 0, 0)); //MemDC.FillSolidRect(rect, RGB(0, 0, 0));//直接使用rect同可
     
    
//使用MemDC绘制自己需要的内容,此处以直线为例     MemDC.MoveTo(0, 0);
    MemDC.LineTo(100, 100);

    //把内存DC复制到输入DC中
    pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC, 0, 0, SRCCOPY);

    //绘图完成后的清理
    MemBitmap.DeleteObject();
    MemDC.DeleteDC();
复制代码
posted @   燕钰达  阅读(173)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示