求助窗体中加入背景问题

czcn2008 2008-09-10 08:45:40
窗体中加入了一个Picture1控件,在里面加载一张图片作为背景.

怎样才能使的背景图片随着窗体大小而表呢!


...全文
1117 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveatsky 2010-12-19
  • 打赏
  • 举报
回复
学习一下
Baijinwen 2010-09-13
  • 打赏
  • 举报
回复
试试看,谢谢。
FrankArmageddon 2010-01-02
  • 打赏
  • 举报
回复
都好强大的说……
sweetyzd 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chenjl1031 的回复:]
VB codeOptionExplicit'Form1上添加1个图片框picture1Private DeclareFunction StretchBlt Lib"gdi32" (ByVal hdcAsLong, ByVal xAsLong, ByVal yAsLong, ByVal nWidthAsLong, ByVal nHeightAsLong, ByVal hSrcDCAsLong, ByVal xSrcAsLong, ByVal ySrcAsLong, ByVal nSrcWidthAsLong, ByVal nSrcHeightAsLong, ByVal dwRopAsLong)AsLongPrivate DeclareFunction SetStretchBltMode Lib"gdi32" (ByVal hdcAsLong, ByVal nStretchModeAsLong)AsLongPrivateConst HALFTONE=4PrivateConst SRCCOPY=&HCC0020' (DWORD) dest = sourcePrivateSub Form_Load()
Picture1.Picture=LoadPicture("C:\images.jpg")'这时加入背景图,使其一运行就充满窗体 Picture1.Visible=False
Picture1.AutoRedraw=True
Me.AutoRedraw=TrueCall Form_Resize
Me.Refresh
Me.AutoRedraw=FalseEnd SubPrivateSub Form_Resize()Dim RtnAsLongDim hDC1AsLong, hDC2AsLong
hDC1= Picture1.hdc
hDC2= Me.hdcCall SetStretchBltMode(hDC2, HALFTONE)
Rtn= StretchBlt(hDC2,0,0, Me.ScaleWidth, Me.ScaleHeight, hDC1,0,0, Picture1.ScaleWidth, Picture1.ScaleHeight, SRCCOPY)
Me.AutoRedraw=True
Me.RefreshEnd Sub
[/Quote]代码中的Me是什么,在哪定义的?
wormanc 2009-07-28
  • 打赏
  • 举报
回复
我也在找这个
谢谢大家了
czcn2008 2008-09-11
  • 打赏
  • 举报
回复
感谢大家提供了这么多好方法.
东方之珠 2008-09-11
  • 打赏
  • 举报
回复
最好用API,这样,拖动窗体时,窗体不会闪烁!
东方之珠 2008-09-11
  • 打赏
  • 举报
回复
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 = source

Private 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 Sub

Private 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
SYSSZ 2008-09-10
  • 打赏
  • 举报
回复
一般说来图片框不会随图片大小改变,但也不是绝对的.
下边的代码可让图片框随图片大小改变而改变:
Option Explicit
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type
Dim bm As BITMAP
Dim hBmp As Long

Private Sub Command1_Click()
Picture1.Picture = LoadPicture(App.Path & "\" & "124.jpg")
hBmp = Picture1.Picture.Handle
GetObject hBmp, LenB(bm), bm
Picture1.Width = bm.bmWidth * Screen.TwipsPerPixelX
Picture1.Height = bm.bmHeight * Screen.TwipsPerPixelY
Picture1.Move (Form1.Width - Picture1.Width) / 2, (Form1.Height - Picture1.Height) / 2
End Sub

Private Sub Command2_Click()
Picture1.Picture = LoadPicture(App.Path & "\" & "123.jpg")
hBmp = Picture1.Picture.Handle
GetObject hBmp, LenB(bm), bm
Picture1.Width = bm.bmWidth * Screen.TwipsPerPixelX
Picture1.Height = bm.bmHeight * Screen.TwipsPerPixelY
Picture1.Move (Form1.Width - Picture1.Width) / 2, (Form1.Height - Picture1.Height) / 2
End Sub
bob008 2008-09-10
  • 打赏
  • 举报
回复
楼上连代码都给你写了... 啥心都不用操了...
bob008 2008-09-10
  • 打赏
  • 举报
回复
你应该用IMAGE 控件... IMAGE 控件有自动缩放的功能
fvflove 2008-09-10
  • 打赏
  • 举报
回复

Option Explicit

'增加一个 image1 控件

Private Sub Form_Load()
'image1 加载图片


Image1.Left = 0
Image1.Top = 0
'位置

Image1.Width = Me.Width
Image1.Height = Me.Height
'大小

Image1.Stretch = True

'图片随控件而改变大小

Image1.Picture = LoadPicture("C:\WINDOWS\Web\Wallpaper\Bliss.bmp")

'加载图片
End Sub

Private Sub Form_Resize()
If Me.Width > 0 And Me.Height > 0 Then '只有大于0改变背景及设置背景
Image1.Width = Me.Width
Image1.Height = Me.Height
End If
End Sub

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧