用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 ExplicitPrivate Sub Command1_Click()On Error GoTo error'打开文件的错误处理CommonDialog1.ShowOpenIf CommonDialog1.FileName<>“”ThenImage1.Picture=LoadPicture(CommonDialog1.FileName)'让选择的图片文件赋予Image1VScroll1.Value=0HScroll1.Value=0Check'比较图片与图片框的大小End IfError:End SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Resize()'改变窗体大小时,调整各控件的位置Picture1.Width=Form1.ScaleWidth-1500Picture1.Top=0Picture1.Height=Form1.ScaleHeight-HScroll1.HeightCommand1.Left=Form1.Width-1250Command2.Left=Form1.Width-1250HScroll1.Width=Picture1.WidthHScroll1.Top=Picture1.HeightVScroll1.Height=Picture1.HeightVScroll1.Left=Picture1.WidthcheckEnd SubPrivate Sub HScroll1_Change()Image1.Left=-HScroll1.Value'水平滚动条发生变化时,使图像框向相反的方向移动End SubPrivate Sub HScroll1_Scroll()Image1.Left=-HScroll1.ValueEnd SubPrivate Sub VScroll1_Change()Image1.Top=-VScroll1.Value'垂直滚动条发生变化时,使图像框向相反的方向移动End SubPrivate Sub VScroll1_Scroll()Image1.Top=-VScroll1.ValueEnd SubSub check()'比较图片与图片框大小的子程序If Image1.Height<=Picture1.HeightThen '当图片高度小于图片框高度VScroll1.Enabled=False'使垂直滚动条不响应鼠标事件Image1.Top= (Picture1.Height-Image1.Height)/2 '使图片垂直居中Else'当图片高度大于图片框高度VScroll1.Enabled=True'使垂直滚动条响应鼠标事件Image1.Top=0VScroll1.Max=Image1.Height-Picture1.Height '设置滚动最大值End IfIf Image1.Width<=Picture1.WidthThen '比较图片与图片框的宽度HScroll1.Enabled=FalseImage1.Left=(Picture1.Width - Image1.Width)/2ElseHScroll1.Enabled=TrueImage1.Left=0HScroll1.Max=Image1.Width - Picture1.WidthEnd IfEnd Sub
添加两个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
或者,工程-部件,加载 Kodak Image Edit Controls(Kodak图象编辑控件),在窗体上画一个ImgEdit控件,代码: Private Sub Command1_Click()CommonDialog1.ShowOpenIf CommonDialog1.FileName<>“”ThenImgEdit1.Image=CommonDialog1.FileName ImgEdit1.Display end if
新建一个工程,在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 ExplicitPrivate Sub Command1_Click()On Error GoTo error'打开文件的错误处理CommonDialog1.ShowOpenIf CommonDialog1.FileName<>“”ThenImage1.Picture=LoadPicture(CommonDialog1.FileName)'让选择的图片文件赋予Image1VScroll1.Value=0HScroll1.Value=0Check'比较图片与图片框的大小End IfError:End SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Resize()'改变窗体大小时,调整各控件的位置Picture1.Width=Form1.ScaleWidth-1500Picture1.Top=0Picture1.Height=Form1.ScaleHeight-HScroll1.HeightCommand1.Left=Form1.Width-1250Command2.Left=Form1.Width-1250HScroll1.Width=Picture1.WidthHScroll1.Top=Picture1.HeightVScroll1.Height=Picture1.HeightVScroll1.Left=Picture1.WidthcheckEnd SubPrivate Sub HScroll1_Change()Image1.Left=-HScroll1.Value'水平滚动条发生变化时,使图像框向相反的方向移动End SubPrivate Sub HScroll1_Scroll()Image1.Left=-HScroll1.ValueEnd SubPrivate Sub VScroll1_Change()Image1.Top=-VScroll1.Value'垂直滚动条发生变化时,使图像框向相反的方向移动End SubPrivate Sub VScroll1_Scroll()Image1.Top=-VScroll1.ValueEnd SubSub check()'比较图片与图片框大小的子程序If Image1.Height<=Picture1.HeightThen '当图片高度小于图片框高度VScroll1.Enabled=False'使垂直滚动条不响应鼠标事件Image1.Top= (Picture1.Height-Image1.Height)/2 '使图片垂直居中Else'当图片高度大于图片框高度VScroll1.Enabled=True'使垂直滚动条响应鼠标事件Image1.Top=0VScroll1.Max=Image1.Height-Picture1.Height '设置滚动最大值End IfIf Image1.Width<=Picture1.WidthThen '比较图片与图片框的宽度HScroll1.Enabled=FalseImage1.Left=(Picture1.Width - Image1.Width)/2ElseHScroll1.Enabled=TrueImage1.Left=0HScroll1.Max=Image1.Width - Picture1.WidthEnd IfEnd Sub
添加两个滚动条,代码稍微修改一下
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
Private Sub Command1_Click()CommonDialog1.ShowOpenIf CommonDialog1.FileName<>“”ThenImgEdit1.Image=CommonDialog1.FileName
ImgEdit1.Display end if