'* ************************************************************** *
'* 程序名称:MDIForm1.frm
'* 程序功能:让背景图片铺满整个MDIForm窗口
''* ************************************************************** *
Dim WithEvents picBackground As PictureBox
Private Sub MDIForm_Load()
Set picBackground = Me.Controls.Add("VB.PictureBox", "picBackground")
picBackground.Appearance = 0
picBackground.BorderStyle = 0
picBackground.Align = 0
picBackground.ScaleMode = vbPixels
picBackground.AutoRedraw = False
Set picBackground.Picture = LoadPicture("g:\me.jpg")
picBackground.Visible = True
End Sub
Private Sub MDIForm_Resize()
picBackground.Move 0, 0, Me.Width, Me.Height
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
Me.Controls.Remove "picBackground"
End Sub
Private Sub picBackground_Paint()
Dim i As Long, j As Long, w As Long, h As Long
w = picBackground.ScaleX(picBackground.Picture.Width, vbHimetric, vbPixels)
h = picBackground.ScaleY(picBackground.Picture.Height, vbHimetric, vbPixels)
For i = 0 To Me.Width \ 15 \ w + 1
For j = 0 To Me.Width \ 15 \ h + 1
picBackground.PaintPicture picBackground.Picture, i * w, j * h
Next
Next
End Sub
'* ************************************************************** *
'* 程序名称:MDIForm1.frm
'* 程序功能:让背景图片铺满整个MDIForm窗口
'* ************************************************************** *
Dim WithEvents picBackground As PictureBox
Private Sub MDIForm_Load()
Set picBackground = Me.Controls.Add("VB.PictureBox", "picBackground")
picBackground.Appearance = 0
picBackground.BorderStyle = 0
picBackground.Align = 0
picBackground.ScaleMode = vbPixels
picBackground.AutoRedraw = False
Set picBackground.Picture = LoadPicture("g:\me.jpg")
picBackground.Visible = True
End Sub
Private Sub MDIForm_Resize()
picBackground.Move 0, 0, Me.Width, Me.Height
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
Me.Controls.Remove "picBackground"
End Sub
Private Sub picBackground_Paint()
Dim i As Long, j As Long, w As Long, h As Long
w = picBackground.ScaleX(picBackground.Picture.Width, vbHimetric, vbPixels)
h = picBackground.ScaleY(picBackground.Picture.Height, vbHimetric, vbPixels)
For i = 0 To Me.Width \ 15 \ w + 1
For j = 0 To Me.Width \ 15 \ h + 1
picBackground.PaintPicture picBackground.Picture, i * w, j * h
Next
Next
End Sub
这个代码基本上满足了设计要求,由于是为了清楚的表达思路,所以使用了一个动态图片框,在实际使用时,如果MDIForm窗体上还有一些设计时的子控件,比如有工具栏,则不使用动态图片框,而是在设计时直接放置一个PictureBox控件,然后工具栏放置到这个PictureBox控件里,再按代码中PictureBox的属性进行逐一设置,这样就可以既让背景图片铺满窗口,又可以显示工具栏,否则,动态加载的图片框会遮隐住工具栏,造成了顾此失彼。