用Visual Basic轻松实现看图软件

2008-02-23 06:39:18来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  一、 前言

  在日常的工作或学习中,像一些常用的工具是必不可少的。比如ACDsee,WinRAR等等。其实在VB中就可以很容易地实现像ACDsee这样的一些基本看图功能,用着自己编写的看图软件,感觉是不是非常棒?!好了,言归正传,现在就开始编写吧!

  二、分析与实现

  编写之前,首先把一些重要的实现功能思考一下。明白了原理,做其他类似的程序,应该是轻车熟路了。

  1) 在选择的目录中过滤出图片格式的文件(gif,jpg,bmp,ico等)功能:

  VB中自带的DriveListBox,DirListBox,FileListBox控件组合就可以轻易的实现上述功能,将FileListBox的Pattern属性设置为*.jpg;*.bmp;*.ico;*.gif即可,这样FileListBox中只显示Pattern属性设定好的扩展名所对应的图片文件。

  2) 将当前目录下的图片按分页的方式显示功能:

  关于显示图片的控件问题,其实用VB自带的Image控件就可以了。对于如何实现分页的问题,就需要按照自定义的显示图片数量/页(本程序定义为25张图片/页),动态生成Image控件组,然后将目录中的图片以缩放预览的方式显示出来,具体实现参见后面的代码。

  以上两个问题解决了,基本功能应该可以实现了。下面就是具体的实现步骤:

  a) 主窗体设计

  主窗体布局采用流行的T型框架,上方包括菜单及常用工具栏,左侧显示目录结构树,右侧为显示图片区域(图片预览区),下方为状态栏,用来显示简单的图片信息。下表是用到的部分控件列表:

控件名 控件类型 标题 说明 Command1(1) CommandButton 上一页 预览上一页图片 Command1(0) CommandButton 下一页 预览下一页图片 Picture1 PictureBox 用来装入预览控件组的容器控件 Image1(0) Image 显示图片控件 Drive1 DriveListBox 显示当前系统的磁盘列表 Dir1 DirListBox 显示当前磁盘的目录列表 File1 FileListBox 显示当前目录的图片格式文件列表
  b) 代码实现

  通过以下一段代码将驱动器列表控件、目录列表控件、文件列表控件联系起来。

Private Sub Dir1_Change()
 File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
 Dir1.Path = Drive1.Drive
 Call InitShowPic
End Sub


Private Sub File1_PathChange() ‘当文件列表发生变化时重新显示图片
 Call InitShowPic
End Sub

  其中InitShowPic是自定义函数,用来显示当前目录下的第一页图片。主窗体初始化时,需要先将显示图片的Image控件组动态创建,以下就是创建代码:

Private Sub Form_Load()
 Dim i, j As Integer
 For i = 1 To 24 ‘动态创建24个Image控件
  Load Image1(i) ‘动态创建Image控件
  Image1(i).Visible = True ‘显示此控件
 Next

 Drive1.Drive = "c:" ‘默认驱动器为C:
 Dir1.Path = "c:\"
 Picture1.DrawWidth = 3
 For i = 1 To 4 ‘在Picture画线将Image控件组以5×5排列
  Picture1.Line (0, i * (Picture1.Height \ 5) - 30)-(Picture1.Width, i * (Picture1.Height \ 5) - 30), &H80000003

  Picture1.Line (i * (Picture1.Width \ 5) - 30, 0)-(i * (Picture1.Width \ 5) - 30, Picture1.Height), &H80000003
 Next

 For i = 0 To 4
  For j = 0 To 4
   Image1(i * 5 j).Left = j * (Picture1.Width \ 5) 50
   Image1(i * 5 j).Top = i * (Picture1.Height \ 5) 50
  Next
 Next
 currindex = -1 ‘当前选择图片的索引为-1表示没有选择图片
End Sub


Private Sub InitShowPic() ‘显示当前目录的第一页图片(1到25)
 Dim i As Integer
 For i = 0 To 24 ‘所有Image控件不显示图片
  Image1(i).Picture = LoadPicture("")
  Image1(i).ToolTipText = ""
 Next
 If File1.ListCount = 0 Then ‘如果当前目录没有图片
  StatusBar1.Panels(1).Text = ""
  StatusBar1.Panels(2).Text = ""
  StatusBar1.Panels(3).Text = ""
  StatusBar1.Panels(4).Text = ""
  StatusBar1.Panels(4).Visible = False
  If currindex <> -1 Then ‘如果选择了图片,则显示此图片的Image控件的边框风格改为平板风格
   Image1(currindex).Appearance = 0
  End If 
  currpage = 1: currindex = -1 ‘当前选择的页号为1并不选择图片
  Exit Sub
 End If
 currpage = 1: currindex = -1 ‘如果当前目录有图片,则将页号赋值为1并不选择图片
 Call DisplayPicPage(currpage) ‘调用自定义函数显示指定页号的图片
End Sub

Private Sub DisplayPicPage(page As Integer) ‘显示指定页的图片
 Dim i As Integer
 Dim usetime As Long
 On Error Resume Next
 usetime = GetTickCount
 If (File1.ListCount - (25 * (page - 1)) < 25) And (File1.ListCount - (25 * (page - 1)) > 0) Then
  For i = 0 To File1.ListCount Mod 25 - 1
   Image1(i).Picture = LoadPicture(Dir1.Path "\" File1.List((page - 1) * 25 i))
   Image1(i).ToolTipText = File1.List((page - 1) * 25 i)
  Next
  For i = File1.ListCount Mod 25 To 24
   Image1(i).Picture = LoadPicture("")
   Image1(i).ToolTipText = ""
  Next
  StatusBar1.Panels(1).Text = "图片:" & File1.ListCount & "(张)" Space(5) "当前第" & (currpage - 1) * 25 1 & "-" & (currpage - 1) * 25 File1.ListCount Mod 25 & "张"

 Else
  For i = 0 To 24
   Image1(i).Picture = LoadPicture(Dir1.Path "\" File1.List((page - 1) * 25 i))
   Image1(i).ToolTipText = File1.List((page - 1) * 25 i)
  Next
  StatusBar1.Panels(1).Text = "图片:" & File1.ListCount & "(张)" Space(5) "当前第" & (currpage - 1) * 25 1 & "-" & currpage * 25 & "张"

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:VB实现文字“闪入”显示的特殊效果

下一篇:浅谈用VB6.0编写“特洛伊木马”程序