C# 双缓冲不减少闪烁
我正在绘制面板中对象的网格。当我快速滚动面板时,会出现闪烁。我原以为启用双缓冲可以解决这个问题,但我发现它并没有完全绘制所有内容,我只剩下空白部分。 有没有人能给我一些建议,看看会发生什么,我该如何纠正 更新:C# 双缓冲不减少闪烁,c#,.net,winforms,gdi+,C#,.net,Winforms,Gdi+,我正在绘制面板中对象的网格。当我快速滚动面板时,会出现闪烁。我原以为启用双缓冲可以解决这个问题,但我发现它并没有完全绘制所有内容,我只剩下空白部分。 有没有人能给我一些建议,看看会发生什么,我该如何纠正 更新: 我发现我是用Creategraphics()创建图形对象,而不是使用paint方法中的参数如何设置双缓冲 您应该将控件的DoubleBuffered属性设置为true public UserControl1() { InitializeComponent(); this.Doub
我发现我是用Creategraphics()创建图形对象,而不是使用paint方法中的参数如何设置双缓冲 您应该将控件的DoubleBuffered属性设置为true
public UserControl1()
{
InitializeComponent();
this.DoubleBuffered = true;
}
或
使用SetStyle,并同时设置OptimizedBoubleBuffer和AllPaintingInWmPaint
public UserControl1()
{
InitializeComponent();
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
}
ControlStyles.AllPaintingWMPAINT指示控件忽略WM_擦除BKGND消息。这将减少您看到的闪烁,尤其是在滚动时。当将DoubleBuffered属性设置为true时,这意味着它调用了与第二个示例中相同的SetStyle