【问题标题】:Windows Form Paints Repeatedly In XP, But Not In VistaWindows 窗体在 XP 中重复绘制,但在 Vista 中没有
【发布时间】:2010-11-19 22:54:14
【问题描述】:

我正在尝试解决我的应用程序中的一个问题。我在 Vista 中开发应用程序,它在那里运行良好,但是当我将它带到 XP 时,表单变得迟缓且无响应。当我使用断点查看 windows 消息时,我发现在 XP 中,表单大约每秒重复绘制一次(即使它并不真正需要);然而,在 Vista 上的相同测试并没有显示这种重复的绘画。

关于可能导致此问题的任何想法?

【问题讨论】:

    标签: .net winforms windows-vista windows-xp paint


    【解决方案1】:

    没有看到具体的代码等,我不知道您的具体问题,但是由于桌面窗口管理器 (DWM),Vista 中的窗口绘制完全不同。由于合成效果,每个窗口的图像实际上是缓存/双缓冲的,因此您不会看到重新绘制的闪烁。

    我建议您专注于解决 XP 上的问题,因为这显然是 DWM 在 Vista 上掩盖的问题。

    【讨论】:

      【解决方案2】:

      某些原因导致您的部分或全部窗口失效。

      正如@Jon 所说的没有太多细节,但这里有一些事情要寻找:

      1. 您有自定义绘制逻辑吗?描述一下。
      2. 您的代码中有计时器吗?他们是做什么的?
      3. 闪烁是仅在程序正在使用时发生,还是在您的手离开计算机而只是观看时发生?
      4. 您只是在使用标准的 .Net 控件还是任何控件库/用户控件?

      【讨论】:

        【解决方案3】:

        感谢大家的意见。现在问题已经解决了,在 Subversion 的帮助下!窗口迟缓是一个相对较新的问题,所以我决定及时回顾我使用 Subversion 的源代码,发现我最近将 WS_EX_COMPOSITED 样式标志应用于窗体以减少 Vista 中的闪烁。

        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams result = base.CreateParams;
                result.ExStyle |= 0x02000000; // WS_EX_COMPOSITED
                return result;
            }
        }
        

        当我将其注释掉时,该表单在 XP 中再次响应,并且重复的 WM_PAINT 消息消失了。因此,解决方案是仅在 Vista 或更高版本中应用 WS_EX_COMPOSITED。

        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams result = base.CreateParams;
                if (Environment.OSVersion.Platform == PlatformID.Win32NT 
                    && Environment.OSVersion.Version.Major >= 6)
                {
                    result.ExStyle |= 0x02000000; // WS_EX_COMPOSITED
                }
        
                return result;
            }
        }
        

        现在一切正常!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-28
          • 2012-06-09
          • 1970-01-01
          • 2011-03-20
          • 1970-01-01
          相关资源
          最近更新 更多