一个很古老的有关问题,但又一直没有得到满意的答案,请来看看

一个很古老的问题,但又一直没有得到满意的答案,请高手进来看看
首先,我向解答出的朋友们保证,我会及时给你结贴,但不要让我等太多天,我怕我会忘记,但这几天我一定会观注此问题的。

其实,我这问题已在CDSN上问过好多次了,但都得不到满意的答案。希望这次能有个高手能详细的帮我解答好这个问题,下面我也详细说明我的问题:

在VB6中,我用pictureBox来画长方形小格图(因为我要求有保留BMP图片功能,所以不能用ImageBox控件),我是在pictureBox中用picture1.line的方法来画小方格图的,我在程序中要画的方格图很多,会超出屏幕的原来实际宽度和高度。但是pictureBox控件不会自动象IE浏览器那样当超过屏幕的长或高时,就自动生成一个长和高的滑条,通过鼠标拉动滑条可以看到超出屏幕的其它部份内容。现在我就问,如何解决pictureBox中画图时,当画出的图超出屏幕的部份怎么也用滑条拖动来解决?请列出代码来,因为起先有人说用两个picturebox控件来实现,但我怎么做都没有办法,不懂他们是怎么做到的?

------解决方案--------------------
友情支持一下!
------解决方案--------------------
在Picture1内用滚动条移动Picture2:
用两个PictureBox控件,首先在窗体添加1个PictureBox控件Picture1,然后在Picture1中间用鼠标加载另1个PictureBox控件Picture2.
在穿体添加剂个HScroll控件于窗体或Picture1内,调整Picture2的Height.
垂直滚动条建议不要与水平滚动条同时使用,会报错或当机.
代码如下:

Private Sub Form_Load()
Me.Height = 11295
Me.Width = 15360
Picture1.Width = Me.Width - 400
'Picture2.Height = Picture1.Height
Picture2.Width = Picture1.Width * 2.1 '倍率可调整
End Sub

Private Sub HScroll1_Change()
Picture2.Left = -HScroll1 * 0.5倍率需调整
End Sub

------解决方案--------------------
我也是经常用picture控件来画曲线,为了实现图形的缩放功能,我是在内存中使用变量来记录坐标点,然后绘制图像,当图像的横坐标或者纵坐标大于控件的scaleheight或者scalewidth属性时,改变这两个属性的数值,然后重新绘制曲线。

这样也可以实现你需要的功能,但是要看你的数据量有多大。

我使用的最大量就是干脆设了三个65535的数组,刷新整个图像的时间好像也没用一两秒。
------解决方案--------------------
首先在窗体添加1个PictureBox控件Picture1,然后在Picture1中间用鼠标画另1个PictureBox控件Picture2.再加上hscroll vscroll

Dim ox As Integer, oy As Integer, flag As Boolean
Private Sub Form_Load()
Picture2.AutoRedraw = True
Picture2.Left = Picture1.Left
Picture2.Top = Picture1.Top
Picture2.Width = Picture1.Width * 10
Picture2.Height = Picture1.Height * 10
HScroll1.Min = 0
HScroll1.Max = 100
VScroll1.Min = 0
VScroll1.Max = 100

End Sub

Private Sub HScroll1_Change()
Picture2.Left = -HScroll1.Value * 0.1 * Picture1.Width
End Sub


Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If flag Then
Picture2.Line (ox, oy)-(X, Y), vbRed
flag = False
Else
flag = True
ox = X
oy = Y
End If
End Sub

Private Sub VScroll1_Change()
Picture2.Top = -VScroll1.Value * 0.1 * Picture1.Width

End Sub

------解决方案--------------------
呵呵,我记得,好像是把一个autodraw设置为false一个设置为true好像就可以的。。。很久以前看过,,记不清,自己g吧
------解决方案--------------------
偶现在用的也是关于大量图片管理的超长窗体,楼主可试试下面方法:
先在窗体上拖一个双屏幕长的frame1框(你的所有内容都可以在这上面拖出),高18000;宽15085;(窗体的属性Scalemode取1-Twip)
然后拖水平与垂直的两个滚动条;(注意:要在窗体上拖出)
Vscrloo1(竖滚动条)属性:LargeChange=20000,Max=11055
HScroll1(横)属性:LargeChange=8000;Max=1000;Top=18000;Width=14040
上面是偶的选用参数,你也可自选;
建立一个模块:下面代码放进去
Option Explicit
Public Type POINTL
x As Long
y As Long
End Type
Declare Function CallWindowProc _
Lib "user32 " Alias "CallWindowProcA " _
(ByVal lpPrevWndFunc As Long, _
ByVal hwnd As Long, _
ByVal Msg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Declare Function SetWindowLong _
Lib "user32 " Alias "SetWindowLongA " _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Declare Function SystemParametersInfo _