双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。
双缓冲绘图的步骤:
1、在内存中创建与画布一致的缓冲区
2、在缓冲区画图
3、将缓冲区位图拷贝到当前画布上
4、释放内存缓冲区
双缓冲绘图的代码实现(在MFC下):

void CMFCApplication1View::OnDraw(CDC* pDC)
{CMFCApplication1Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;//获取屏幕的矩形CRect rectClient;GetClientRect(rectClient);//双缓冲绘图的实现CDC MDC;MDC.CreateCompatibleDC(pDC);        //创建兼容的DCCBitmap bmp;bmp.CreateCompatibleBitmap(pDC, rectClient.Width(), rectClient.Height());        //创建兼容的图片MDC.SelectObject(bmp);//将图片画到内存中m_bmpBack.Draw(MDC, rectClient);    //将内存中的内容拷贝到画布上pDC->BitBlt(0, 0, rectClient.Width(), rectClient.Height(), &MDC, 0, 0, SRCCOPY); ReleaseDC(pDC);
}

这是关于BitBlt的一些介绍

BOOLBitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORDdwRop);

x:目标矩形区域的左上角x轴坐标点。

y:目标矩形区域的左上角y轴坐标点。

nWidth:在目标设备中绘制位图的宽度。

nHight:在目标设备中绘制位图的高度。

pSrcDC:源设备上下文对象指针。

xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。

ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。

dwRop:光栅操作代码
dwRop有如下选择:

BLACKNESS 使用黑色填充目标区域

DSTINVERT 目标矩阵区域颜色取反

MERGECOPY 使用与运算组合原设备矩形区域的颜色和目标设备的画刷

MERGEPAINT 使用或运算将反向的源矩形区域的颜色和目标矩形区域的颜色合并

NOTSRCCOPY 复制源设备区域的反色到目标设备中

NOTSRCERASE 使用或运算组合源设备区域与目标设备区域的颜色,然后对结果颜色取反

PATCOPY 复制源设备当前选中的画刷到目标设备

PATINVERT 使用异或运算组合目标设备选中的画刷和目标设备区域的颜色

PATPAINT 通过或运算组合目标区域当前选中的画刷和源设备区域反转的颜色

SRCAND 使用与运算组合源设备和目标设备区域的颜色

SRCCOPY 直接复制源设备区域到目标设备中

SRCERASE 使用与运算组合目标设备区域的反色与源设备区域的颜色

SRCINVERT 使用异或运算组合源设备区域颜色和目标设备区域颜色

SRCPAINT 使用或运算组合源设备区域颜色和目标设备区域颜色

Cimage下实现双缓冲绘图相关推荐

  1. 【Qt】2D绘图之双缓冲绘图

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制矩形 04. 双缓冲绘图 05. 附录 01. 概述 所谓的双缓冲绘图的概念.双缓冲(double-buffers)绘 ...

  2. [Qt教程] 第18篇 2D绘图(八)双缓冲绘图

    [Qt教程] 第18篇 2D绘图(八)双缓冲绘图 楼主  发表于 2013-5-2 22:07:23 | 查看: 789| 回复: 1 双缓冲绘图 版权声明 该文章原创于Qter开源社区(www.qt ...

  3. MFC绘制动态曲线,用双缓冲绘图技术防闪烁

    转载自:ZHY_ongu的博客:MFC绘制动态曲线,用双缓冲绘图技术防闪烁 先上效果图    随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新. 一.如何绘制动态曲线. 所谓动画,都是一帧一帧 ...

  4. VC中的双缓冲绘图技术

    之前在做图形绘制的时候,发现在拖动图形时候,会出现闪烁的情况,后来就上网找了一下双缓冲绘图,本文非原创,只是想保存下来,以后要用的时候不用再到处去搜,也希望能帮助有这方面困惑的朋友 原文来自http: ...

  5. 【QT】QT从零入门教程(十三):QT画笔工具QPainter (双缓冲绘图)

      QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage.QOpenGLPaintDevice.QWidget 和QPaintDevice 显示图形(线.形状.渐变等). ...

  6. Qt之旅---10 双缓冲绘图

    1 基本知识 但我们使用painter进行快速绘图时会看到类似图下 的情况 双缓冲绘图技术 的原理 用两个画布进行绘图,一个用于显示,一个用于绘制,也就是将图画之后再显示 就可以避免上面的情况. 2 ...

  7. c语言双缓冲怎么用,C语言游戏编程:GDI怎么实现双缓冲绘图去掉闪烁

    在上篇文章中将我要用 C语言重新写一个俄罗斯方块 ,使用的是GDI的绘图模式(目前正在移植到DX上去,想添加一些更好友好的动画).数据与动画分离,动画的帧率保持在30左右.但是绘图的时候画面出现了强烈 ...

  8. android双缓冲绘图技术分析

    转载请说明出处:http://www.jianshu.com/p/efc0bebfd22e 双缓冲.多缓冲技术在计算机科学中其实是一个广义的概念,不过其本质上的意思都是差不多的.今天我们就来讲一讲双缓 ...

  9. [转载] MFC绘制动态曲线,用双缓冲绘图技术防闪烁

    转载的原文地址 先上效果图 随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新. 一.如何绘制动态曲线 所谓动画,都是一帧一帧的图像连续呈现在用户面前形成的.所以如果你掌握了如何绘制静态曲线,那 ...

最新文章

  1. MaxCompute studio与权限那些事儿
  2. JSP学习——语法(二)
  3. Android - 启动器图标大小
  4. dell 服务器 加ssd硬盘,DELL服务器加SSD硬盘.doc
  5. redis设置键的生存时间或过期时间
  6. windows 指定的网络名不可用__被我解决了!
  7. ASP.NET MVC入门---实例演示:通过ContentResult实现主题定制
  8. flask-配置的设置-三种配置的实现方法
  9. WF工作流设计器(WPF版)
  10. cass读取dat文件_南方CASS教程+视频讲解+插件汇总,小白快速上手的测绘神器
  11. 让你的IE浏览器支持HTML5标准方法代码
  12. LeetCode OJ Symmetric Tree 判断是否为对称树(AC代码)
  13. python之使用numpy实现从二维数组中找出行(子数组)为特定值的索引
  14. matlab eval函数代替,Matlab自动图例方法-使用eval函数
  15. 如何成功对接APP项目资源
  16. 爬虫实践: 获取百度贴吧内容
  17. 面试官:你在平时的工作中遇到过哪些问题让你印象深刻?
  18. 计算机学院的横幅,毕业横幅标语(精选50句)
  19. LIO-SAM中的mapOptmization
  20. 业聚医疗第三次冲刺港交所上市,钱永勋、刘桂祯夫妇为实控人

热门文章

  1. ssm+jsp计算机毕业设计中国瑰宝——戏曲赏析网92n88(程序+lw+源码+远程部署)
  2. 核磁共振、顺磁共振、磁共振成像......你想要的都在这里
  3. 4. 计算机会计报表编制的基本流程,初级会计电算化考试重点 第四章
  4. c语言将一段英文镜像输出,两个奇技淫巧,将 Docker 镜像体积减小 99%
  5. oracle所有作业的答案,Oracle作业及其答案.ppt
  6. 【数据库】关系数据理论习题及解析
  7. 使用Microsoft AppLocale阅读日文注释
  8. 无法在表 'Test' 中可为空的列上定义 PRIMARY KEY 约束
  9. 从EOS 主网同步数据
  10. rr与hr_统计基本功:OR、RR和HR的区别和选择