首页 > 代码库 > [C#]实现panel控件的双缓冲刷新

[C#]实现panel控件的双缓冲刷新

默认的panel控件在重画时会出现闪烁的问题

解决问题的方法是在继承原有panel属性的基础上赋予它双缓冲的功能

在Form类中添加如下代码

 1 /// <summary> 2 /// 双缓冲panel 3 /// </summary> 4 public class DoubleBufferPanel : Panel 5 { 6    public DoubleBufferPanel() 7    { 8       this.SetStyle(ControlStyles.AllPaintingInWmPaint | //不擦除背景 ,减少闪烁 9            ControlStyles.OptimizedDoubleBuffer | //双缓冲10            ControlStyles.UserPaint, //使用自定义的重绘事件,减少闪烁11            true);12    }13 }

然后找到panel控件定义和初始化的地方

 1 private System.Windows.Forms.Panel panel1; 

 1 this.panel1 = new System.Windows.Forms.Panel(); 

改成

 1 private DoubleBufferPanel panel1; 

 1 this.panel1 = new DoubleBufferPanel(); 

[C#]实现panel控件的双缓冲刷新