如何实现图片缩略显示

相信大家都用过ACDSee这款经典的看图软件吧,或许有许多人对它里面的缩略图预览功能感到神秘。它到底是如何判断文件夹下有多少图片文件呢?又是怎样生成缩略图的呢?想到这儿,可能许多VB迷们早就想把这个技术加入到自己的软件当中去了,下面,我就介绍一种简易的方法给大家,VB Fans不妨一试。
   坐下来仔细想想,生成缩略图主要有三个难点:1.判断该生成多少个图片框控件;2.如何不重复地把图片载入到图片框控件中;3.把所有这些图片框控件按顺序排列好。只要把这些问题解决了,其它的技术就不难了,对此我会在此文中一一介绍。
   说了那么多,现在来制作一个实例。新建一个工程,把Form1的Caption属性设置为”缩略图片浏览器”;BorderStyle属性设置为3-Fixed Dialog;WindowState属性设置为2-Maximized。再在其上分别放置一个PictureBox,一个DriveListBox,一个DirListBox,一个FileListBox,两个CommandButton控件和一个Image控件。
   源程序如下:
   Private Sub Command1_Click
   '以下是”:预览”的代码
   On Error Resume Next
   Dim i As Integer
   Dim j As Integer
   j = File1.ListCount + 1
   If Image1 2 .Visible = True Then
   Call Command2_Click
   End If
   For i = 1 To j
   Load Image1(i)
   Image1(i).Visible = True
   Image1(i).Left = Image1(i - 1).Left + 1400
   Image1(i).Top = Image1(i - 1).Top
   Image1(i- 1).Picture = LoadPicture(Dir1.Path + “\” + File1.List(i - 1))
   DoEvents
   If Image1(i).Left >= 10000 Then
   Image1(i).Top = Image1(i - 1).Top + 1200
   Image1(i).Left = Image1(0).Left
   End If
   Next
   '判断是否有Image1控件被Picture1遮挡了
   If (Image1(j - 3).Top + Image1(j - 3).Height) > Frame1.Height Then
   Frame1.Height = Image1(j - 3).Top + Image1(j - 3).Height + 100
   End If
   VScroll1.Max = Frame1.Height - Picture1.Height
   End Sub
   Private Sub Command2_Click()
   Dim i As Integer
   For i = 1 To Image1.Count - 1
   Unload Image1(i)
   Next
   Image1(0).Picture = LoadPicture(“”)
   VScroll1.Max = 0
   End Sub
   Private Sub Dir1_Change()
   File1.Path = Dir1.Path
   End Sub
   Private Sub Drive1_Change()
   Dir1.Path = Drive1.Drive
   End Sub
   Private Sub Form_Load()
   Image1(0).Picture = LoadPicture(“”)
   End Sub
   Private Sub VScroll1_Change()
   Picture2.Top = -VScroll1.Value
   End Sub
   以上就是整个软件的源程序,重要的部分在于Command1_Click下的生成数组控件,请大家细看,好了,你可以生成你漂亮的软件了。