码迷,mamicode.com
首页 > Windows程序 > 详细

C# GDI绘图中的双缓冲技术

时间:2018-08-02 13:53:08      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:double   技术   bubuko   动作   net   int   href   完成   擦除   

         最近的Winform项目中涉及到用GDI绘制波形图的问题,那么就遇到了最常见的图像窗口闪烁问题。之前去面试的过程中也被问到过如何解决绘图过程中的图像闪烁问题。

    今天就结合实际的项目和拜读的一些关于双缓冲技术的文章浅谈一下自己对双缓冲技术的理解。主要参考文章来源于https://blog.csdn.net/keep_silence_/article/details/7849880

   一、出现闪烁的原因

  绘图过程中出发WM_PAINT消息时窗体需要进行重绘操作,充会操作过程先是擦除窗体的背景色,接着向窗体绘制图像。一旦这两个动作不同时发生,就会出现先擦除背景色,在绘制图像的现象,看起来就像是图像一直在闪烁。

  二、解决方法:

  采用双缓冲技术来绘图。

  三、双缓冲技术的原理:

  先把图像绘制在缓冲区,再将缓冲区的结果输出到窗体上。就是说,刷新一次窗口时,所有元素同时显示到窗口上。

  四、C#中操作双缓冲的方法。

  1、利用默认的双缓冲

  (1)这种方法最为简便,就是通过.Net Framework提供的窗体和控件的默认双缓冲:设置窗体和控件属性DoubleBuffered = true;

          技术分享图片

         (2)使用SetStyle方法未窗体和控件启用默认双缓冲。在构造函数中添加设置相关代码即可。

 技术分享图片

      项目中也应用的这种方法。

 

  2、手动管理双缓冲

  手动管理双缓冲就是单独开辟内存实现双缓冲,在其中绘制完成后再显示到窗体中。

 

C# GDI绘图中的双缓冲技术

标签:double   技术   bubuko   动作   net   int   href   完成   擦除   

原文地址:https://www.cnblogs.com/Xiaobigben/p/9406608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!