4952.html
来自「以电子书的形式收集了VB一些常见问题解决方法,可以很方便的查找自己需要解决的问题」· HTML 代码 · 共 23 行
HTML
23 行
<html>
<head>
<title>Re: help!!!</title>
</head>
<body bgcolor="#FFFFFF" vlink="#808080">
<center>
<h1>Re: help!!!</h1>
</center>
<hr size=7 width=75%>
<hr size=7 width=75%><p>
Posted by <a href="mailto:honey0@tcts1.seed.net.tw">Honey</a> on August 21, 1998 at 22:43:45:<p>
In Reply to: <a href="4891.html">help!!!</a> posted by hujian on August 20, 1998 at 13:05:57:<p>
: i have picturebox control,and i load a picture,if the picture<br>: is too big,how can the picturebox auto appear the scrollbar?<br>: help me thanks!<p>据我所知 VB 并没有直接可以提供<br>这种功能的物件 只有 DIY<br>在Form 上填上 PictureBox , <br>ScrollBar 再加上一些程式就好了<br>上次你不是问过了吗? <br>(应该没记错~是小顺子回答的) <br>大概问题没有解决吧..... <br>嗯 以下提供你一些东西<br>是我以前写的东西 <br>我承认这并不是好的程式 <br>为了提升速度我已经把物件<br>数值全部宣告成变数运算<br>很难阅读 最近我可能会把<br>它整理一下 如果以下你看不懂 <br>整理后我在寄给你<br> <br>步骤<br>1.先在Form上 填上一个PictureBox<br> PictureBox的Name属性改为pa<br> AutoSize属性改为True <br>2.在Form最右下角(不可以在pa上)<br> 再填上一个PictureBox,<br> PictureBox的Name属性<br> 需为picture1 <br> Height,Width属性值为255<br>3.在Form最右缘(不可以在pa上)<br> 填上一个VscrollBar<br> 在最右缘(不可以在pa上)<br> 填上一个HscrollBar<br> 尽量和 "笔记本" 排列方式一样<p>最后在Form中的程式码 从 一般宣告开始如下<br>(可以直接贴上) <p>'一般宣告<br>Public Pi1T As Long<br>Public Frm2H As Long<br>Public Pi1L As Long<br>Public Frm2W As Long<br>Public Hs1T As Long<br>Public Frmm2H As Long<br>Dim LngTemp(19) As Long<br>Option Explicit<p>Private Sub Form_Load()<br> Pi1T = Picture1.Top<br> Frm2H = Form2.Height<br>'/*Picture1.Top = 3840(Picture1.Top(piw)) _<br>+ (Me.Height - 4760(Form2.Height _<br>))*/<br>'Lngtemp(1) = Lngtemp(5) + Pi1T - Frm2H<br> Pi1L = Picture1.Left<br> Frm2W = Form2.Width - 60<br>'/*Picture1.Left = 5160 + (Me.Width - 5460)*/<br>'/*VScroll1.Left = 5160 + (Me.Width - 5460)*/<br>'<br>'/*HScroll1.Top = 3900 + (Me.Height - 4800)*/<br> Hs1T = HScroll1.Top<br> Frmm2H = Form2.Height '+ Picture1.Height<br> 'Lngtemp(3) = Lngtemp(5) + Hs1T - Frmm2H<br>'Lngtemp(2) = Lngtemp(6) + Pi1L - Frm2W<br> <br> With HScroll1<br> .Value = 0<br> .Max = -300<br> .LargeChange = 10<br> .SmallChange = 5<br> End With<br> <br> With VScroll1<br> .Max = -150<br> .LargeChange = 20<br> .Value = 0<br> .SmallChange = 5<br> End With<br> <br> Me.Pa.Picture = LoadPicture("C:\windows\CLOUDS.bmp")<br> '设定读取图片 <br>End Sub<p><br>Private Sub Form_Resize()<br>On Error GoTo Finish<br> LngTemp(5) = Me.Height<br> LngTemp(6) = Me.Width<br> LngTemp(3) = LngTemp(5) + Hs1T - Frmm2H<br> LngTemp(1) = LngTemp(5) + Pi1T - Frm2H<br> LngTemp(2) = LngTemp(6) + Pi1L - Frm2W<br> 'Lngtemp(1) = Lngtemp(5) - 620 '<-4760+3840<br> 'Lngtemp(2) = Lngtemp(6) - 300 '<-5460+5160<br> 'Lngtemp(3) = Lngtemp(5) - 620 '<-4800 + 3900<br> 'Lngtemp(4) = Lngtemp(5) - 1150 '<-4800+3650<br> LngTemp(7) = (LngTemp(6) - 120)<br> LngTemp(8) = (LngTemp(6) - 280)<br> LngTemp(9) = (LngTemp(5) - 400)<br> '/*Picture1.Top = 3840 + (Me.Height - 4760)*/<br> '/*Picture1.Left = 5160 + (Me.Width - 5460)*/<br> '/*VScroll1.Left = 5160 + (Me.Width - 5460)*/<br> '/*HScroll1.Top = 3900 + (Me.Height - 4800)*/<br> '/*Picture2.Top = 3650 + (Me.Height - 4800)*/<br> Picture1.Top = LngTemp(1)<br> Picture1.Left = LngTemp(2)<br> VScroll1.Left = LngTemp(2)<br> HScroll1.Top = LngTemp(3)<br> <br> '/*object.移动量 =object.长度 -表单 _<br> 长度增减量*/<br> Dim i As Double<br> i = IIf(HScroll1.Visible = True, 670, 450)<br> <br> '/*HScroll1 VScroll1 都存在时需留一 _<br> 段空间放Picture1 ,670是表单 _<br> 外线内线差(测试值)*/<br> If Pa.ScaleHeight > (LngTemp(5) - i) Then<br> VScroll1.Visible = True<br> <br> If Pa.Width > (LngTemp(6) - 310) Then<br> VScroll1.Height = (LngTemp(3))<br> HScroll1.Width = LngTemp(8)<br> HScroll1.Visible = True<br> Else<br> <br> If HScroll1.Value = 0 Then<br> Picture1.Visible = False<br> VScroll1.Height = LngTemp(9)<br> HScroll1.Visible = False<br> Else<br> VScroll1.Height = (LngTemp(3))<br> HScroll1.Width = LngTemp(8)<br> End If<br> '/*如果此时卷轴未归零,卷轴就不能 _<br> 消失否则移动的部分会看不到*/<br> <br> End If<br> <br> ElseIf Pa.Width > (LngTemp(6) - 180) Then<br> <br> If VScroll1.Value = 0 Then<br> Picture1.Visible = False<br> VScroll1.Visible = False<br> HScroll1.Visible = True<br> HScroll1.Width = LngTemp(7)<br> Else<br> Picture1.Visible = True<br> HScroll1.Visible = True<br> VScroll1.Visible = True<br> VScroll1.Height = (LngTemp(3))<br> HScroll1.Width = LngTemp(8)<br> End If<br> '/*如果此时卷轴未归零,卷轴就不能 _<br> 消失否则移动的部分会看不到*/<br> Else<br> '/*以下是图形大小未超出表单大小时*/<br> If HScroll1.Value = 0 And VScroll1.Value = 0 Then<br> HScroll1.Visible = False<br> VScroll1.Visible = False<br> ElseIf VScroll1.Value = 0 Then<br> Picture1.Visible = False<br> VScroll1.Visible = False<br> HScroll1.Visible = True<br> HScroll1.Width = LngTemp(7)<br> ElseIf HScroll1.Value = 0 Then<br> VScroll1.Visible = True<br> Picture1.Visible = False<br> VScroll1.Height = LngTemp(9)<br> HScroll1.Visible = False<br> Else<br> VScroll1.Height = (LngTemp(3))<br> HScroll1.Width = LngTemp(8)<br> End If<br> '/*如果此时卷轴未归零,卷轴就不能 _<br> 消失否则移动的部分会看不到*/<br> End If<br> 'If HScroll1.Visible = False Then _<br> Picture2.Top = Picture2.Top + 255<br> '/*尺规再 HScroll1不存在时贴紧表单*/<br> <br> If VScroll1.Visible = True And _<br> HScroll1.Visible = True Then<br> Picture1.Visible = True<br> Else<br> Picture1.Visible = False<br> End If<br> '/*水平 垂直卷轴都存在时,交接处需以 _<br> Picture1 隔开*/<br>Finish:<p>End Sub<br>Private Sub HScroll1_Change()<p> If HScroll1.Value = 0 Then Call Form_Resize<br> '/*检查表单是否大于图形*/<br> LngTemp(11) = HScroll1.Value<br> LngTemp(12) = Pa.ScaleWidth<br> LngTemp(13) = HScroll1.Width<br> LngTemp(14) = LngTemp(12) - LngTemp(13) + 29<br> Pa.Left = (Format(LngTemp(11)) / 300) * _<br> Format(LngTemp(14))<br> <br>End Sub<br>Private Sub Pa_Change()<br> <br> <br> If Pa.ScaleHeight > VScroll1.Height Then<br> '/*图片垂直长度大于垂直卷轴*/<br> <br> If Pa.Width > HScroll1.Width Then<br> '/*图片垂直长度大于垂直卷轴 _<br> 图片宽度大于水平卷轴*/<br> VScroll1.Height = LngTemp(3)<br> HScroll1.Width = LngTemp(8)<br> VScroll1.Visible = True<br> HScroll1.Visible = True<br> Picture1.Visible = True<br> Else<br> '/*图片垂直长度大于垂直卷轴*/<br> VScroll1.Visible = True<br> VScroll1.Height = (Me.Height - 560)<br> End If<br> <br> ElseIf Pa.Width > HScroll1.Width Then<br> '/*图片宽度大于水平卷轴*/<br> HScroll1.Visible = True<br> HScroll1.Width = LngTemp(8)<br> Else<br> '/*图形小于卷轴*/<br> HScroll1.Visible = False<br> VScroll1.Visible = False<br> Picture1.Visible = False<br> End If<p>End Sub<p>Private Sub VScroll1_Change()<br> LngTemp(15) = VScroll1.Value<br> LngTemp(16) = Pa.ScaleHeight<br> LngTemp(17) = VScroll1.Height<br> LngTemp(18) = LngTemp(16) - LngTemp(17)<br> If VScroll1.Value = 0 Then Call Form_Resize<br> '/*检查表单是否大于图形*/<br> Pa.Top = (Format(LngTemp(15)) / 150) * _<br> Format(LngTemp(18))<p>End Sub<p>
<br>
<br><hr size=7 width=75%><p>
<a name="followups">Follow Ups:</a><br>
<ul><!--insert: 4952-->
</ul><!--end: 4952-->
<br><hr size=7 width=75%><p>
</body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?