Hey Chris!

    To optimize the rendering in Paint.NET, the application gets a list
of clipping rectangles.   

    I tried to use the get_ClipRectangles on the Hwnd class through
reflection and it works, but it returns some strange rectangles which
can make the application hang for 20-30 at a time.

    I have added some instrumentation code to look at the rectangles
returned and they seem to be out of range, and this seems to hang the
application.   Notice that the control's boundary is 212, 159:

Returning 3 rectangles for PaintDotNet.SurfaceBox that has 212,159
{X=-58655,Y=-58655,Width=59013,Height=58923}
{X=0,Y=0,Width=800,Height=600}
{X=0,Y=0,Width=212,Height=159}
Returning 2 rectangles for PaintDotNet.SurfaceBox that has 212,159
{X=-138,Y=-138,Width=267,Height=156}
{X=118,Y=7,Width=11,Height=21}

    The hang goes away if I replace the code in SystemLayer/UI.cs with
code that just returns a rectangle that is 0, 0, control.Width,
control.Height, but this is not optimal.

    I tried using "Rectangle.Intersect" with the  control.Bounds, but it
got me too much of a clipped rectangle, so I suspect am getting
rectangles that have a different origin.

    The entire code is in:

        svn+ssh://[EMAIL PROTECTED]/extras/trunk/pdn3/trunk/src

Miguel.
_______________________________________________
Mono-winforms-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-winforms-list

Reply via email to