参考一下我写的这个代码:Option Explicit 'Form1上添加1个图片框picture1 Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long Private Declare Function SetStretchBltMode Lib "gdi32" (ByVal hdc As Long, ByVal nStretchMode As Long) As Long Private Const HALFTONE = 4 Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = sourcePrivate Sub Form_Load() Picture1.Picture = LoadPicture("C:\images.jpg") '这时加入背景图,使其一运行就充满窗体 Picture1.Visible = False Picture1.AutoRedraw = True Me.AutoRedraw = True Call Form_Resize Me.Refresh Me.AutoRedraw = False End SubPrivate Sub Form_Resize() Dim Rtn As Long Dim hDC1 As Long, hDC2 As Long hDC1 = Picture1.hdc hDC2 = Me.hdc Call SetStretchBltMode(hDC2, HALFTONE) Rtn = StretchBlt(hDC2, 0, 0, Me.ScaleWidth, Me.ScaleHeight, hDC1, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, SRCCOPY) Me.AutoRedraw = True Me.Refresh End Sub
你需在窗体添加Image控件,并设置好Image控件的Picture属性的图片选择. 使用如下代码: Private Sub Form_Load() Image1.Stretch = True Image1.Height = Me.Height Image1.Width = Me.Width End SubPrivate Sub Form_Resize() Image1.Height = Me.Height Image1.Width = Me.Width End Sub
不设置form的背景图片,用个image控件来显示图片,放在最底层 Private Sub Form_Load() Image1.Stretch = True End SubPrivate Sub Form_Resize() On Error Resume Next Image1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight End Sub
'Form1上添加1个图片框picture1
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function SetStretchBltMode Lib "gdi32" (ByVal hdc As Long, ByVal nStretchMode As Long) As Long
Private Const HALFTONE = 4
Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = sourcePrivate Sub Form_Load()
Picture1.Picture = LoadPicture("C:\images.jpg") '这时加入背景图,使其一运行就充满窗体
Picture1.Visible = False
Picture1.AutoRedraw = True
Me.AutoRedraw = True
Call Form_Resize
Me.Refresh
Me.AutoRedraw = False
End SubPrivate Sub Form_Resize()
Dim Rtn As Long
Dim hDC1 As Long, hDC2 As Long
hDC1 = Picture1.hdc
hDC2 = Me.hdc
Call SetStretchBltMode(hDC2, HALFTONE)
Rtn = StretchBlt(hDC2, 0, 0, Me.ScaleWidth, Me.ScaleHeight, hDC1, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, SRCCOPY)
Me.AutoRedraw = True
Me.Refresh
End Sub
使用如下代码:
Private Sub Form_Load()
Image1.Stretch = True
Image1.Height = Me.Height
Image1.Width = Me.Width
End SubPrivate Sub Form_Resize()
Image1.Height = Me.Height
Image1.Width = Me.Width
End Sub
我的意思是要拉申我的底图尽寸.
通过form.picture.width属性可以看出这个width是在变的,但我的实现图片未变.
我现在就是需要把我的图片宽来适应这个form.picture.width,
当然高也一样
你们都使用了第二个控件:Picture1和Image1
我的问题是form的底图.
不是picture和Image控件改变大小,以及.
当然,要是实在没办法,可能也只能是采用二位的方法了.
Private Sub Form_Load()
Image1.Stretch = True
End SubPrivate Sub Form_Resize()
On Error Resume Next
Image1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
End Sub
Form1.Picture 属性并没有这样的缩放功能,所以只有搭个桥间接的实现。像我1楼那个,是将Picure1隐藏起来,然后通过Picture1映射到Form1来实现的。
form的底图是没法变的,因为没有缩放功能。就算你把底图映射到剪贴板,再从剪贴板映射到Form1.Picture上,那剪贴板的图像你总得找个地方保存起来才行吧,否则无法实现。
在Form上放一picture1
Form_load事件---,将Form上图片赋给picture1----隐藏picture1
form_resize事件,-----显示picture1-清除Form1上的图片,-----,根据放大比例Bltbit将picture1的图片重绘在Form上----隐藏picture1
只是很麻烦而已