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 + -
显示快捷键?