注册 登录
编程论坛 VB6论坛

[求助]如何让一张图片充满整个窗体?

红影 发布于 2006-05-03 10:16, 2453 次点击
我在MIDFORM上加载了一个1024*768的图片
由于这个midform是必须最大化了的,所以运行时图片不能充满整个窗体,在右边空出了一条
有什么办法能让图片充满整个窗体?
9 回复
#2
xinfresh2006-05-03 18:12
有点看不懂题目……
#3
红影2006-05-03 19:48
是这样的
给midform窗体的picture属性加载的图片,我找的已经是做桌面专用的大图了,1024*768的
可它不能充满整个窗体背景
我想知道有什么命令是可以把图片放大让它充满窗体
就像我在ACCESS里做的窗体背景就可以用maximize把它最大化了充满窗体
#4
红影2006-05-07 17:13
以下这个范例, 要:
1、一个 MDIForm:不必设定任何属性。
2、一个 Form1:不一定是 MDIChild,最好 MDIChild 为 False,但是 AutoRedraw 设成 True。
3、Form1 上面放一个隐藏的 PictureBox:名称为 Picture1,不必设定 Picture 属性。
4、一张图片的完整路径。

'将以下模组放入 MDIForm 的声明区中:

Sub TileMDIBkgd(MDIForm As Form, bkgdtiler As Form, bkgdfile As String)
If bkgdfile = "" Then Exit Sub
Dim ScWidth%, ScHeight%
ScWidth% = Screen.Width / Screen.TwipsPerPixelX
ScHeight% = Screen.Height / Screen.TwipsPerPixelY
Load bkgdtiler
bkgdtiler.Height = Screen.Height
bkgdtiler.Width = Screen.Width
bkgdtiler.ScaleMode = 3
bkgdtiler!Picture1.Top = 0
bkgdtiler!Picture1.Left = 0
bkgdtiler!Picture1.Picture = LoadPicture(bkgdfile)
bkgdtiler!Picture1.ScaleMode = 3

For n% = 0 To ScHeight% Step bkgdtiler!Picture1.ScaleHeight
For o% = 0 To ScWidth% Step bkgdtiler!Picture1.ScaleWidth
bkgdtiler.PaintPicture bkgdtiler!Picture1.Picture, o%, n%
Next o%
Next n%

MDIForm.Picture = bkgdtiler.Image
Unload bkgdtiler
End Sub

以下为一应用实例:

Private Sub MDIForm_Load()
TileMDIBkgd Me, Form1, "c:\windows\Tiles.bmp"
End Sub
#5
红影2006-05-07 17:44

好像这样之后的确可以让一张1024*768的图片充满一个最大化了的窗体

但是图片失真严重,变成一小格一小格的了

还有更好的方法吗?

我现在只能是用Picture Manager把1024*768的图片放大30%左右让它来做窗体背景

#6
VB爱上我2006-05-07 18:10
Private Sub Form_Load()
Image1.Stretch = True
Image1.Top = 0
Image1.Left = 0
Image1.Height = Me.ScaleHeight
Image1.Width = Me.ScaleWidth
End Sub
#7
红影2006-05-07 20:55
以下是引用VB爱上我在2006-5-7 18:10:00的发言:
Private Sub Form_Load()
Image1.Stretch = True
Image1.Top = 0
Image1.Left = 0
Image1.Height = Me.ScaleHeight
Image1.Width = Me.ScaleWidth
End Sub

这个方法我试了,它倒是能让一张大图在一个较小的窗体完全显示

但是我想要的效果是,让一张图片充满一个最大化了的窗体。

#8
VB爱上我2006-05-08 09:50

用了一个时钟控件.判断窗体面积有没有发生变化.
dim mai as double
Private Sub Form_Load()
Image1.Stretch = True
Image1.Top = 0
Image1.Left = 0
Image1.Height = Me.ScaleHeight
Image1.Width = Me.ScaleWidth
mai = Me.ScaleHeight * Me.ScaleWidth
End Sub

Private Sub Timer1_Timer()
If Me.ScaleHeight * Me.ScaleWidth <> mai Then
Image1.Stretch = True
Image1.Top = 0
Image1.Left = 0
Image1.Height = Me.ScaleHeight
Image1.Width = Me.ScaleWidth
mai = Me.ScaleHeight * Me.ScaleWidth
End If
End Sub

#9
红影2006-05-08 10:08

上面这个方法挺好
把时钟的Interval设置成100刚刚好
谢谢

#10
爱神的箭2012-10-15 09:51
直接用了,挺合适的。
1