如何给VB的form加滚动条

t69490741 2010-04-01 11:30:08
VB的form有个背景图片属性,我要在画图的过程中
给VB的form背景关联一个背景图片
有的时候背景图片很大,超过了form的最大程度
我想问下,怎么给form添加滚动条,在拖动的时候可以看到整幅的图片
图片的大小不知道
这不是VB.NET,没有autoscroll属性。
希望各位大侠帮帮忙,最好能贴出代码
非常感谢,在线等待
...全文
1004 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
学习风 2010-04-04
  • 打赏
  • 举报
回复
用其他控件显示,多换换角度
yankaiyuan 2010-04-02
  • 打赏
  • 举报
回复
VB自带有控件
在属性中做相应的设置
相关事件《VB程序设计》上有
yankaiyuan 2010-04-02
  • 打赏
  • 举报
回复
《VB程序设计》上有
Tiger_Zhao 2010-04-02
  • 打赏
  • 举报
回复
Option Explicit

Private m_pic As IPictureDisp
Private m_Width As Long
Private m_Height As Long

Private Sub DrawPicture()
Me.Cls
Me.PaintPicture m_pic, -HScroll1.Value, -VScroll1.Value
End Sub

Private Sub Form_Load()
Me.AutoRedraw = True
Me.ScaleMode = vbPixels
Set m_pic = LoadPicture("C:\WINDOWS\Web\Wallpaper\Bliss.bmp")
m_Width = ScaleX(m_pic.Width, vbHimetric, vbPixels)
m_Height = ScaleY(m_pic.Height, vbHimetric, vbPixels)
End Sub

Private Sub Form_Resize()
Dim lClientWidth As Long
Dim lClientHeight As Long

lClientWidth = Me.ScaleWidth - 24
lClientHeight = Me.ScaleHeight - 24

HScroll1.Move 0, lClientHeight, lClientWidth, 24
If lClientWidth >= m_Width Then
HScroll1.Max = 0
Else
HScroll1.Max = m_Width - lClientWidth
HScroll1.LargeChange = lClientWidth
End If

VScroll1.Move lClientWidth, 0, 24, ScaleHeight
If lClientHeight >= m_Height Then
VScroll1.Max = 0
Else
VScroll1.Max = m_Height - lClientHeight
VScroll1.LargeChange = lClientHeight
End If

DrawPicture
End Sub

Private Sub HScroll1_Change()
DrawPicture
End Sub

Private Sub VScroll1_Change()
DrawPicture
End Sub
t69490741 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 moke520 的回复:]
别用 form 了吧....
[/Quote]
不用form那用什么?
能给个如果解决的例子么?
moke520 2010-04-01
  • 打赏
  • 举报
回复
别用 form 了吧....
t69490741 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bhtdw 的回复:]
要知道图片大小,然后设置滚动条MAXVALUE,在事件里移动,没自动的。
[/Quote]
图片的大小是随机的
我也不知道客户要准备多大的图片
因为每个电脑分辨率不一样
bhtdw 2010-04-01
  • 打赏
  • 举报
回复
要知道图片大小,然后设置滚动条MAXVALUE,在事件里移动,没自动的。
东方之珠 2010-04-01
  • 打赏
  • 举报
回复
用picturebox作为父控件,子类化窗口添加滚动条控制picturebox移动。
fzx4936 2010-04-01
  • 打赏
  • 举报
回复
用一个picture做背景 用横竖2个ScrollBar来控制picture的位置就可以了
PctGL 2010-04-01
  • 打赏
  • 举报
回复
http://files.cnblogs.com/pctgl/ScrollBar32.rar
试试这个
t69490741 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 moke520 的回复:]
图有多大啊? - -
最大的多大?
[/Quote]
这要看显示器的分辨率的吧,我也不知道多大
如果是PICTUREBOX,能不能根据图片的大小进行缩放的?
moke520 2010-04-01
  • 打赏
  • 举报
回复
图有多大啊? - -
最大的多大?
t69490741 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhao4zhong1 的回复:]
这个例子用滚动条移动 PictureBox 控件穿过窗体。要试用此例,先把代码粘贴到包含一小的 PictureBox 控件和 HScrollBar 控件的窗体的声明部分,然后按 F5 键,并单击滚动条。

Private Sub Form_Load ()
HScroll1.Max = 100 ' 设置最大值.
HScroll1.LargeChange = 20 ' 敲击 5 次后穿……
[/Quote]
你这个好像不行,pictureBox的头在往下移动,能不能头不移动,而是里面的内容往下移动
t69490741 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tiger_zhao 的回复:]
通过属性设置的背景图片不能滚动,建议自己用 PaintPicture 进行显示。
[/Quote]
PaintPicture ,能否给出代码看下,不是很明白。
PaintPicture 是控件么?没用过,能说详细点么?
赵4老师 2010-04-01
  • 打赏
  • 举报
回复
这个例子用滚动条移动 PictureBox 控件穿过窗体。要试用此例,先把代码粘贴到包含一小的 PictureBox 控件和 HScrollBar 控件的窗体的声明部分,然后按 F5 键,并单击滚动条。

Private Sub Form_Load ()
HScroll1.Max = 100 ' 设置最大值.
HScroll1.LargeChange = 20 ' 敲击 5 次后穿过.
HScroll1.SmallChange = 5 ' 敲击 20 次后穿过.
Picture1.Left = 0 ' 图形从左边开始.
Picture1.BackColor = QBColor(3) ' 设置图形框的颜色.
End Sub
Private Sub HScroll1_Change ()
' 按照滚动条移动图形.
Picture1.Left = (HScroll1.Value / 100) * ScaleWidth
End Sub

赵4老师 2010-04-01
  • 打赏
  • 举报
回复
用PictureBox
Tiger_Zhao 2010-04-01
  • 打赏
  • 举报
回复
通过属性设置的背景图片不能滚动,建议自己用 PaintPicture 进行显示。

7,785

社区成员

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

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