C# Winform 启用双缓冲,减少闪烁
通过重写 CreateParams 属性,启用窗口的 WS_EX_COMPOSITED 样式,从而优化窗口的绘制性能,减少闪烁
namespace VipSoft.ClientForm
{
public partial class DemoFrm : Form
{
public DemoFrm()
{
InitializeComponent();
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
}
}
具体解释:
-
CreateParams属性:- 在 Windows Forms 中,
CreateParams是一个用于定义窗口创建参数的属性。通过重写它,可以自定义窗口的样式和行为。
- 在 Windows Forms 中,
-
cp.ExStyle |= 0x02000000:ExStyle是窗口的扩展样式(Extended Style)。0x02000000是WS_EX_COMPOSITED的常量值,表示启用双缓冲绘制。|=是按位或赋值操作符,用于将WS_EX_COMPOSITED样式添加到现有的扩展样式中。
-
WS_EX_COMPOSITED的作用:- 启用
WS_EX_COMPOSITED后,窗口及其子控件会使用双缓冲技术进行绘制。这意味着所有绘制操作会先在内存中进行,然后再一次性绘制到屏幕上,从而减少闪烁和绘制时的视觉卡顿。
- 启用
-
适用场景:
- 当窗体包含大量控件或频繁刷新时,可能会出现闪烁问题。通过启用
WS_EX_COMPOSITED,可以显著改善用户体验。
- 当窗体包含大量控件或频繁刷新时,可能会出现闪烁问题。通过启用
注意事项:
- 启用
WS_EX_COMPOSITED可能会略微增加内存占用,因为需要额外的缓冲区来存储绘制内容。 - 在某些情况下(如复杂的 UI 或高刷新率场景),可能需要进一步优化绘制逻辑。
总结:
这段代码通过启用 WS_EX_COMPOSITED 样式,优化了窗口的绘制性能,减少了闪烁问题,适用于需要平滑绘制的 Windows Forms 应用程序。
本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/18716838
浙公网安备 33010602011771号