[Mono-winforms-list] Double Buffering

Jonathan S. Chambers Jonathan.Chambers@ansys.com
Thu, 28 Apr 2005 20:40:32 -0400


The first patch is valid. The second is not. The logic looks like it =
still needs fixed (when should needs_redraw be set to false), but my =
solution does not seem to be working...




-----Original Message-----
From:	mono-winforms-list-admin@lists.ximian.com on behalf of Jonathan S. =
Chambers
Sent:	Thu 4/28/2005 8:31 PM
To:	Jonathan S. Chambers; mono-winforms-list@lists.ximian.com
Cc:=09
Subject:	RE: [Mono-winforms-list] Double Buffering
Also, the setting of 'needs_redraw =3D false' (line 3181) should be =
moved outside of the if block. Notice that it can never actually get =
inside the if block, since that is the only place needs_redraw is set to =
false.

- Jonathan


-----Original Message-----
From:	mono-winforms-list-admin@lists.ximian.com on behalf of Jonathan S. =
Chambers
Sent:	Thu 4/28/2005 8:21 PM
To:	mono-winforms-list@lists.ximian.com
Cc:=09
Subject:	[Mono-winforms-list] Double Buffering
      I noticed that support for double buffering has been included in =
Control.cs. This is nice, except that I think the two calls to DrawImage =
(lines 3177 and 3195) should pass ClientRectangle as the second =
parameter, rather than ClipRectangle of the paint event args. According =
to MS documentation, and actual behavior,  "The image represented by the =
image object is scaled to the dimensions of the rect rectangle."=20
      Thus with the code as is, the code as is draws the ImageBuffer to =
the ClipRectangle. When the clip rectangle is the entire control, this =
makes sense. However, when the clip rectangle is just part of the =
control (like when a partially obstructing window is removed) the whole =
control is drawn to the clip area. (I can send an image if anyone wants =
to see).=20

Thanks,
Jonathan