[Mono-list] Backdrop behaving different in Mono

Glen Farrell glensmono at telus.net
Wed May 17 17:48:40 EDT 2006


Hi Peter, I'm just guessing, but somehow I don't think I can send an 
attachment through this list? Anyway, a quick testcase is just create a new 
"Windows Application" project. Change the IsMDIContainer property of Form1 
to True. Then add this code to the constructor:

System.Drawing.Bitmap Backdrop = new Bitmap(100,100);
System.Drawing.Graphics GBack = System.Drawing.Graphics.FromImage(Backdrop);
GBack.FillRectangle(System.Drawing.Brushes.Blue,0,0,100,100);
GBack.DrawRectangle(System.Drawing.Pens.Red, 10,10,80,80);
this.BackgroundImage = Backdrop;
Anyway, I've played around with it a bit more, and found the behaviour is a 
little different then I first thought. I believe the above actually does set 
the background image for the form - but the MDI client area is drawn over 
top of that. (And if you set IsMDIContainer to False, you will see the image 
in Mono).

With a toolbar, it's actually not that the toolbar gets the image, but that 
the toolbar is transparent, showing the underlying background. Resizing the 
window makes this obvious - you'll see the image scrolling by beneath the 
toolbar.

The interesting part is that Microsoft is inconsistent here - 
BackgroundImage works, but BackColor does not (neither work for Mono). So 
possibly Mono is the one doing it correctly? Anyway, did a search for MDI 
background color, and found this:

http://www.codeproject.com/cs/miscctrl/mdiclientcontroller.asp

Basically, by looping through the MDI form's Controls collection, you can 
get a handle to the MDI client area. And then using that handle, set the 
BackColor ... or the BackgroundImage! And doing it this way works in both 
.Net and Mono.

So I'm happy doing it that way. Up to you if you want to consider this a 
Mono bug or a .Net bug ...

Glen.




More information about the Mono-list mailing list