分享

在VB中如何让背景图片铺满整个MDIForm

 jztgwq 2013-01-04

   

  '* ************************************************************** *  
'*    程序名称: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的属性进行逐一设置,这样就可以既让背景图片铺满窗口,又可以显示工具栏,否则,动态加载的图片框会遮隐住工具栏,造成了顾此失彼。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多