做一个背景窗体叫:FrmBackPic FrmBackPic 上一个picturebox叫:picBack装要换的图片, 一个Image控件叫:imgDefault 装默认背景Option ExplicitPublic Sub SetBack(Optional ByRef frmMain As Form) '设置背景函数 On Error Resume Next Dim i As Long, j As Long, ls_Path As String
If Trim(ls_Path) <> "" Then If Dir(ls_Path) <> "" Then picBack.Picture = LoadPicture(ls_Path) '图片存在,将图片显示在缓冲区中 Else picBack.Picture = imgDefault.Picture '图片不存在,用默认的图片 End If
Else picBack.Picture = imgDefault.Picture '路径为空,用默认的图片 End If If frmMain.mnuPull.Checked Then '如果为拉伸 Me.PaintPicture picBack.Picture, 0, 0, frmMain.Width, frmMain.Height
Else '如果为平铺 For j = 0 To frmMain.ScaleHeight Step picBack.ScaleHeight For i = 0 To frmMain.ScaleWidth Step picBack.ScaleWidth Me.PaintPicture picBack.Picture, i, j Next Next End If
frmMain.BackColor = frmMain.BackColor - 1 '为了刷MDI窗口,否则背景不会改变 End SubPrivate Sub Form_Load() On Error Resume Next Me.AutoRedraw = True picBack.AutoSize = True
End Sub
在母窗体里加入Code: Private Sub MDIForm_Resize() On Error Resume Next FrmBackPic.SetBack Me FrmBackPic.Hide End Sub
i.... 说个想法吧,不写代码了 用sub main 引导程序 load mdiform istrdpic=loadpicture(a:\JQK.123)'同花啊,嘎嘎 dim a as long a=createc...dc(创建内存DC的那个APi) bitblt a, 0,0,... istrdpic.hdc bitblt getwindowdc(findwindowex(mdiform.hwnd,"client")),0., a,..... 明白否???
Picture1.AutoRedraw = True
'Picture1.visibule = False
Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.Width, Picture1.Height
Picture1.Refresh
'Set MDIForm1.Picture = Picture1.Image
解决的办法就是让picture隐藏起来,但是子窗体关闭后,又必须让mdi上的picture显示出来,
特别麻烦.如果不注意,就会出现背景图丢了的情况.
不知您是如何解决这个问题的.
FrmBackPic 上一个picturebox叫:picBack装要换的图片, 一个Image控件叫:imgDefault 装默认背景Option ExplicitPublic Sub SetBack(Optional ByRef frmMain As Form) '设置背景函数
On Error Resume Next
Dim i As Long, j As Long, ls_Path As String
'从注册表中读取背景图片路径
ls_Path = GetSetting("OrientZiXun", "BackGround", "PathValue")
If Trim(ls_Path) <> "" Then
If Dir(ls_Path) <> "" Then
picBack.Picture = LoadPicture(ls_Path) '图片存在,将图片显示在缓冲区中
Else
picBack.Picture = imgDefault.Picture '图片不存在,用默认的图片
End If
Else
picBack.Picture = imgDefault.Picture '路径为空,用默认的图片
End If If frmMain.mnuPull.Checked Then '如果为拉伸
Me.PaintPicture picBack.Picture, 0, 0, frmMain.Width, frmMain.Height
Else '如果为平铺
For j = 0 To frmMain.ScaleHeight Step picBack.ScaleHeight
For i = 0 To frmMain.ScaleWidth Step picBack.ScaleWidth
Me.PaintPicture picBack.Picture, i, j
Next
Next
End If
Me.Font.name = "楷体_GB2312"
Me.ForeColor = vbBlue
Me.Font.Size = 24
Me.FontBold = True
Me.CurrentX = frmMain.ScaleWidth - 3500
Me.CurrentY = frmMain.ScaleHeight - 1000
frmMain.Picture = Me.Image
frmMain.BackColor = frmMain.BackColor - 1 '为了刷MDI窗口,否则背景不会改变
End SubPrivate Sub Form_Load()
On Error Resume Next
Me.AutoRedraw = True
picBack.AutoSize = True
End Sub
Private Sub MDIForm_Resize()
On Error Resume Next
FrmBackPic.SetBack Me
FrmBackPic.Hide
End Sub
说个想法吧,不写代码了
用sub main 引导程序
load mdiform
istrdpic=loadpicture(a:\JQK.123)'同花啊,嘎嘎
dim a as long
a=createc...dc(创建内存DC的那个APi)
bitblt a, 0,0,... istrdpic.hdc
bitblt getwindowdc(findwindowex(mdiform.hwnd,"client")),0., a,.....
明白否???
怎么少了一句,刚才写了啊...
dim istrdpic as stdpicture