急急急!如何在一个窗体中显示图片,并保持图片的大小不变(不对图片进行拉伸或压缩)。如果图片大小超过窗体,自动加滚动条以适应其大小

解决方案 »

  1.   

    用VB编写看图程序相信大家都用过ACDSee之类的看图程序,有没有想过自己编写一个看图程序呢?用VB来实现这一想法是非常简便的。怎么样?Let's Go!一、界面设计
    新建一个工程,在Form1上放置一个水平滚动条、一个垂直滚动条和一个图片框Picture1。Picture1作为浏览图片的窗口,其大小固定。点击Picture1,再拖入一个图像框Image1(将Image1约束在Picture1中)。设置Image1的Stretch属性为False,使它能自动适应图片大小。点击“工程→部件”,选中Microoft Common Dialog Corntrol 6.0,工具箱中会出现对话框控件,拖入窗体,设置其Filter属性为“*.bmp|*.bmp|*.gif|*.gif|*.jpg|*.jpg|*.*|*.*”。最后,再加入两个命令按钮Command1和Command2,其Caption属性分别设为“打开”和“退出”。二、程序代码
    Option ExplicitPrivate Sub Command1_Click()On Error GoTo error'打开文件的错误处理CommonDialog1.ShowOpenIf CommonDialog1.FileName<>“”ThenImage1.Picture=LoadPicture(CommonDialog1.FileName)'让选择的图片文件赋予Image1VScroll1.Value=0HScroll1.Value=0Check'比较图片与图片框的大小End IfError:End SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Resize()'改变窗体大小时,调整各控件的位置Picture1.Width=Form1.ScaleWidth-1500Picture1.Top=0Picture1.Height=Form1.ScaleHeight-HScroll1.HeightCommand1.Left=Form1.Width-1250Command2.Left=Form1.Width-1250HScroll1.Width=Picture1.WidthHScroll1.Top=Picture1.HeightVScroll1.Height=Picture1.HeightVScroll1.Left=Picture1.WidthcheckEnd SubPrivate Sub HScroll1_Change()Image1.Left=-HScroll1.Value'水平滚动条发生变化时,使图像框向相反的方向移动End SubPrivate Sub HScroll1_Scroll()Image1.Left=-HScroll1.ValueEnd SubPrivate Sub VScroll1_Change()Image1.Top=-VScroll1.Value'垂直滚动条发生变化时,使图像框向相反的方向移动End SubPrivate Sub VScroll1_Scroll()Image1.Top=-VScroll1.ValueEnd SubSub check()'比较图片与图片框大小的子程序If Image1.Height<=Picture1.HeightThen '当图片高度小于图片框高度VScroll1.Enabled=False'使垂直滚动条不响应鼠标事件Image1.Top= (Picture1.Height-Image1.Height)/2 '使图片垂直居中Else'当图片高度大于图片框高度VScroll1.Enabled=True'使垂直滚动条响应鼠标事件Image1.Top=0VScroll1.Max=Image1.Height-Picture1.Height '设置滚动最大值End IfIf Image1.Width<=Picture1.WidthThen '比较图片与图片框的宽度HScroll1.Enabled=FalseImage1.Left=(Picture1.Width - Image1.Width)/2ElseHScroll1.Enabled=TrueImage1.Left=0HScroll1.Max=Image1.Width - Picture1.WidthEnd IfEnd Sub
     
      

  2.   

    添加两个pictureBox,一个包含另外一个,最内的pic的AutoSize设置为True
    添加两个滚动条,代码稍微修改一下
                picShow.Picture = LoadPicture("XXXX")  'xxxx为图片名称
                If picShow.Width > picMain.Width Then
                   hsWidth.Max = picShow.Width - picMain.Width
                   hsWidth.SmallChange = (picShow.Width - picMain.Width) / 10
                   hsWidth.LargeChange = hsWidth.SmallChange
                   hsWidth.Value = 0
                   hsWidth.Visible = True
                Else
                   hsWidth.Visible = False
                   DoEvents
                End If
                
                
                If picShow.Height > picMain.Height Then
                   hsHeight.Max = picShow.Height - picMain.Height
                   hsHeight.SmallChange = (picShow.Height - picMain.Height) / 10
                   hsHeight.LargeChange = hsHeight.SmallChange
                   hsHeight.Value = 0
                   hsHeight.Visible = True
                Else
                   hsHeight.Visible = False
                   DoEvents
                End If
      

  3.   

    或者,工程-部件,加载 Kodak Image Edit Controls(Kodak图象编辑控件),在窗体上画一个ImgEdit控件,代码:
    Private Sub Command1_Click()CommonDialog1.ShowOpenIf CommonDialog1.FileName<>“”ThenImgEdit1.Image=CommonDialog1.FileName
        ImgEdit1.Display    end if   
      

  4.   

    在中form添加一个image  空件并修改其stretch属性