首页 > 后端开发 > C++ > 我如何有效地暂停并恢复.NET控制及其孩子的绘画?

我如何有效地暂停并恢复.NET控制及其孩子的绘画?

Linda Hamilton
发布: 2025-01-30 10:56:09
原创
127 人浏览过

How Can I Efficiently Suspend and Resume Painting for a .NET Control and Its Children?

优化.NET控制重新粉刷使用WM_SETRAW

> 在广泛的更新中,

.NET开发人员通常需要暂时停止在控件及其子女内重新粉刷。 而SuspendLayoutResumeLayout管理布局,它们不会完全抑制重新绘制。

>

wm_setredraw解决方案

>发送到控件的窗口句柄的消息提供了强大的解决方案。 布尔参数控制重新绘制:WM_SETREDRAWdisables,false启用它。true

>实施悬挂图和恢复方法

这个简化的类封装了功能:

<code class="language-csharp">public static class ControlPainting
{
    [DllImport("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int wMsg, bool wParam, int lParam);

    private const int WM_SETREDRAW = 11;

    public static void SuspendPainting(Control parent)
    {
        SendMessage(parent.Handle, WM_SETREDRAW, false, 0);
    }

    public static void ResumePainting(Control parent)
    {
        SendMessage(parent.Handle, WM_SETREDRAW, true, 0);
        parent.Refresh();
    }
}</code>
登录后复制

>用法示例

防止重新粉刷:

<code class="language-csharp">ControlPainting.SuspendPainting(myControl);
// ... perform modifications ...
ControlPainting.ResumePainting(myControl);</code>
登录后复制

进一步阅读

有关更多深入信息,请咨询以下资源:

  • c#jitter
  • >
  • 悬挂布局

以上是我如何有效地暂停并恢复.NET控制及其孩子的绘画?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板