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

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

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

   一、出现闪烁的原因

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

  二、解决方法:

  采用双缓冲技术来绘图。

  三、双缓冲技术的原理:

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

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

  1、利用默认的双缓冲

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

          

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

 

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

 

  2、手动管理双缓冲

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

 

posted on 2018-08-02 13:22  xiaobigben  阅读(335)  评论(0)    收藏  举报

导航