dotNet 画MDI主窗体背景
为MDI父窗体的背景一般无法设置,让人有点遗憾。不过没关系我们可以通过代码未我们加上想要的背景。
首先让我们用dotNet自带的工具Spy++来看一下,MDI父窗体的大致结构。我们可以看到它是由他是两部分组成的(当然前提是你没在MDI窗体上加其他的控件),一个是父窗体本身;一个是用于包含其他MDI Child 窗体的容器MDIClient,我们的背景就是绘制在MDIClient。所以我们首先要找到父窗体的MDIClient,他和放置在父窗体上的,状态栏,按钮栏的等级是一样的,这一点也可以从Syp++中看出。所以我们可以通过如下代码找到它。
foreach(System.Windows.Forms.Control myControl in this.Controls)//this是MDI父窗体
{
if(myControl.GetType().ToString() == "System.Windows.Forms.MdiClient")
{
bgMDIClient = (System.Windows.Forms.MdiClient)myControl;
break;
}
}
找到了它我们只要在上面绘制图形就可以,当让我们所期望的绘制图形有两种方式1、平铺 2、拉伸
我们已这两种方式绘制图形。
System.Drawing.Bitmap bgImage = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile(Application.StartupPath + @"BackGround.jpg");
switch(绘制方式)
{
case 平铺:
System.Drawing.Bitmap myImg = new Bitmap(bgMDIClient.ClientSize.Width,bgMDIClient.ClientSize.Height);
System.Drawing.Graphics myGraphics = System.Drawing.Graphics.FromImage(myImg);
myGraphics.DrawImage(bgImage,0,0,myImg.Width+1,myImg.Height+1);
bgMDIClient.BackgroundImage = myImg;
myGraphics.Dispose();
break;
case 拉伸:
bgMDIClient.BackgroundImage = tBgBitMap;
break;
default:
bgMDIClient.BackgroundImage = tBgBitMap;
break;
}
bbs://www.xamsoft.com/bbs
本人水平有限如有疑问欢迎各位朋友来和我讨论。
如转载请保留全文!