标题如何实现图片缩略显示
栏目软件世界
作者肖枭
发布2001年37期
相信大家都用过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 Image12.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下的生成数组控件,请大家细看,好了,你可以生成你漂亮的软件了。