解决winform界面刷新闪烁问题的多种方案

 更新时间:2024年02月11日 11:41:00   作者:搬砖的诗人Z  
这篇文章给大家介绍了如何解决winform界面刷新闪烁问题的多种方案,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

第一:

设置初始化启用默认双缓冲并提供无闪烁的图形呈现:

this.DoubleBuffered = true;//设置本窗体
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲

第二:

底层重绘每次会清除画布,然后再全部重新绘制,这才是导致闪烁最主要的原因。于是重载消息发送函数操作,禁掉这条消息。

/// <summary>
    /// 捕捉窗体事件 
    /// </summary>
    /// <param name="m"></param>
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == 0x0014) // 禁掉清除背景消息
            return;
     }

第三:

防止闪屏代码

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;
        return cp;
    }
}

到此这篇关于解决winform界面刷新闪烁问题的多种方案的文章就介绍到这了,更多相关winform界面刷新闪烁内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c#与mysql的连接

    c#与mysql的连接

    c#与mysql的连接...
    2007-03-03
  • C#获取CPU处理器核心数量的方法

    C#获取CPU处理器核心数量的方法

    本文主要介绍了C#获取CPU处理器核心数量的方法,代码简单易懂,具有很好的参考价值,需要的朋友可以看下
    2016-12-12
  • 分析C# Dictionary的实现原理

    分析C# Dictionary的实现原理

    对于C#中的Dictionary类相信大家都不陌生,这是一个Collection(集合)类型,可以通过Key/Value(键值对的形式来存放数据;该类最大的优点就是它查找元素的时间复杂度接近O(1)。那么什么样的设计能使得Dictionary类实现O(1)的时间复杂度呢
    2021-06-06
  • C#使用PDFium实现预览PDF文件

    C#使用PDFium实现预览PDF文件

    这篇文章主要为大家详细介绍了C#如何使用PDFium实现预览PDF文件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-10-10
  • Unity实现3D射箭小游戏

    Unity实现3D射箭小游戏

    这篇文章主要为大家详细介绍了Unity实现3D射箭小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 利用C#编写一个Windows服务程序的方法详解

    利用C#编写一个Windows服务程序的方法详解

    这篇文章主要为大家详细介绍了如何利用C#编写一个Windows服务程序,文中的实现方法讲解详细,具有一定的参考价值,感兴趣的可以了解一下
    2023-03-03
  • C#如何使用系统默认应用程序打开文件

    C#如何使用系统默认应用程序打开文件

    本文介绍了如何使用System.Diagnostics.Process类的Start方法来打开文件,通过传递文件路径作为参数,系统会使用默认应用程序打开该文件,例如,如果文件扩展名为.txt,则会使用NotePad或WordPad打开;如果扩展名为.html,则会使用系统默认浏览器打开
    2025-01-01
  • c#执行外部命令示例分享

    c#执行外部命令示例分享

    c#执行外部命令示例分享,大家参考使用吧
    2013-12-12
  • C# WinForms跨线程更新UI的避坑指南

    C# WinForms跨线程更新UI的避坑指南

    文章介绍了在WinForms开发中,后台线程直接修改UI控件导致的异常,分析了线程亲和性和Async/Await的误区,并推荐了使用Invoke机制的解决方案,最后,总结了在开发中避免此类问题的最佳实践,需要的朋友可以参考下
    2026-03-03
  • Unity3D实现NavMesh导航网格寻路

    Unity3D实现NavMesh导航网格寻路

    这篇文章主要为大家详细介绍了Unity3D实现NavMesh导航网格寻路,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05

最新评论