title: Slow screen drawing in .Net C# winforms application
body: <p>I have a very large C# .net 2.0 winforms application which has some drawing issues.</p>
  
  <p>When going into different forms you can see controls being drawn and even the title bar of the form being resized and then disappearing.</p>
  
  <p>The base form that all other forms inherit from has the following code in its constructor. Including setting DoubleBuffering to true.</p>
  
  <pre><code>this.SetStyle(ControlStyles.UserPaint, true);
  
  this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
  
  this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
  
  this.SetStyle(ControlStyles.ResizeRedraw, true);
  
  this.UpdateStyles();
  </code></pre>
  
  <p>The forms also have a backgroundgradient, but removing this makes no difference to the speed.</p>
  
  <p>All controls and forms inherit from base versions.</p>
  
  <p>What can i add or check to help with the drawing speed?</p>
  
  <p>Code within the OnPaint </p>
  
  <pre><code>if (this.b_UseBackgroundGradient)
          {
              Graphics graphics = e.Graphics;
  
              Rectangle backgroundRectangle = this.ClientRectangle;
  
              this.SuspendLayout();
              if (backgroundRectangle.Width != 0 &amp;&amp; backgroundRectangle.Height != 0) 
              {
  
                  using (Brush backgroundBrush = new LinearGradientBrush(backgroundRectangle, base.BackColor, this.BackGradiantColour, LinearGradientMode.ForwardDiagonal))
                  {
                      graphics.FillRectangle(backgroundBrush, backgroundRectangle);
                  }
              }
              this.ResumeLayout();
          }
          else
          {
              base.OnPaint(e);
          }
  </code></pre>