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;
            }
        }
    }
}

具体解释:

  1. CreateParams 属性

    • 在 Windows Forms 中,CreateParams 是一个用于定义窗口创建参数的属性。通过重写它,可以自定义窗口的样式和行为。
  2. cp.ExStyle |= 0x02000000

    • ExStyle 是窗口的扩展样式(Extended Style)。
    • 0x02000000WS_EX_COMPOSITED 的常量值,表示启用双缓冲绘制。
    • |= 是按位或赋值操作符,用于将 WS_EX_COMPOSITED 样式添加到现有的扩展样式中。
  3. WS_EX_COMPOSITED 的作用

    • 启用 WS_EX_COMPOSITED 后,窗口及其子控件会使用双缓冲技术进行绘制。这意味着所有绘制操作会先在内存中进行,然后再一次性绘制到屏幕上,从而减少闪烁和绘制时的视觉卡顿。
  4. 适用场景

    • 当窗体包含大量控件或频繁刷新时,可能会出现闪烁问题。通过启用 WS_EX_COMPOSITED,可以显著改善用户体验。

注意事项:

  • 启用 WS_EX_COMPOSITED 可能会略微增加内存占用,因为需要额外的缓冲区来存储绘制内容。
  • 在某些情况下(如复杂的 UI 或高刷新率场景),可能需要进一步优化绘制逻辑。

总结:

这段代码通过启用 WS_EX_COMPOSITED 样式,优化了窗口的绘制性能,减少了闪烁问题,适用于需要平滑绘制的 Windows Forms 应用程序。

posted @   VipSoft  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-02-15 MQ 消息队列 比较
点击右上角即可分享
微信分享提示