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
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2023-02-15 MQ 消息队列 比较