【问题标题】:Eliminating Windows forms refresh artifacts消除 Windows 窗体刷新工件
【发布时间】:2008-11-03 18:44:58
【问题描述】:

我们在使用 C# 和 .Net 2.0 的 Windows 窗体中有一个相当复杂的 GUI。我的问题是,每当我在 GUI 上拖动任何窗口时,都会在表单上留下伪影。我一辈子都想不出如何消除它。我试过启用双缓冲,但它只会有帮助,并不能消除问题。其他应用程序似乎没有这个问题,我想知道我们做错了什么。

响应答案更新

大多数应用程序只是使用一组布置在面板上的第三方控件(Infragistics)。据我所知,除了基本(非 CPU 密集型)鼠标点击处理之外,GUI 线程中没有任何事情要做。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您可能在 GUI 线程上做了太多工作。将一些工作卸载到后台线程将释放 GUI 以更快地处理 Windows 消息。

    【讨论】:

      【解决方案2】:

      与 Jon B 的回答有关,如果您的应用程序使用 .NET 中的 Graphics 对象进行大量绘图,则这些方法相对于 Windows API 调用相当慢。

      另一种可能性是您的 GUI 可能不会在 OnPaint 事件中自我更新。有时,自定义图形代码会根据计时器事件更新绘图表面,或者仅在需要显示的内容发生变化时才更新绘图表面。像这样编写的代码在大多数情况下似乎都可以工作,但是当另一个窗口移过您的窗口时会产生您所描述的问题。

      【讨论】:

        猜你喜欢
        • 2010-12-02
        • 2016-05-23
        • 2015-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-17
        • 1970-01-01
        相关资源
        最近更新 更多