C#:使用双缓冲让界面绘制图形时避免闪烁

SetStyle(  
                     ControlStyles.OptimizedDoubleBuffer  
                     | ControlStyles.ResizeRedraw  
                     | ControlStyles.Selectable  
                     | ControlStyles.AllPaintingInWmPaint  
                     | ControlStyles.UserPaint  
                     | ControlStyles.SupportsTransparentBackColor,  
                     true);


将这段代码加到用户控件的构造函数中即可生效。

这段代码的主要功能是开启了双缓冲。

平时我以为开双缓冲只需要设置ControlStyles.OptimizedDoubleBuffer为true而已。

但是经过实践才发现,起关键作用的是OptimizedDoubleBuffer和AllPaintingInWmPaint两个。

当这两个都为true的时候。闪烁几乎消失。效果非常好。

原文地址:https://www.cnblogs.com/liyugang/p/1952393.html