title: What is the difference between PaintEventArgs.ClipRectangle and PaintEventArgs.Graphics.ClipBounds
body: <p>When overriding an OnPaint or OnPaintBackground method in an inheritor of System.Windows.Forms.Control, one argument is always a System.Windows.Forms.PaintEventArgs object. The partial object structure:</p>
  
  <ul>
  <li>PaintEventArgs
  <ul>
  <li>ClipRectangle <em>(System.Drawing.Rectangle)</em></li>
  <li>Graphics <em>(System.Drawing.Graphics)</em>
  <ul>
  <li>Clip <em>(System.Drawing.Region)</em></li>
  <li>ClipBounds <em>(System.Drawing.RectangleF)</em></li>
  <li>VisibleClipBounds <em>(System.Drawing.RectangleF)</em></li>
  </ul></li>
  </ul></li>
  </ul>
  
  <p><strong>Graphics.Clip</strong> appears to be a 1-bit map of applicable pixels to influence in subsequent paint operations.</p>
  
  <blockquote>
    <p><em>MSDN: "Gets or sets a Region that limits the drawing region of this Graphics."</em></p>
  </blockquote>
  
  <p><strong>Graphics.ClipBounds</strong> is a read only rectangle that appears to be the minimum rectangle to fully contain the Clip region.</p>
  
  <blockquote>
    <p><em>MSDN: "Gets a RectangleF structure that bounds the clipping region of this Graphics."</em></p>
  </blockquote>
  
  <p><strong>Graphics.VisibleClipBounds</strong> seems to be a more 'intelligent' clip, though I cannot understand how it operates.</p>
  
  <blockquote>
    <p><em>MSDN: "Gets the bounding rectangle of the visible clipping region of this Graphics."</em></p>
  </blockquote>
  
  <p><strong>ClipRectangle</strong> appears to in all cases duplicate the Graphics.ClipBounds property.</p>
  
  <blockquote>
    <p><em>MSDN: "Gets the rectangle in which to paint."</em></p>
  </blockquote>
  
  <p>Can someone please answer the main question and potentially shed light on what all the various boundary objects are for?</p>
  
  <p><strong>Edit:</strong> added MSDN's descriptions as per Dan-o's answer.</p>