要写一个程序,涉及到缩略图的问题,原先准备用StretchBlt来实现的,后来找了下发现PictureBox的PaintPicture方法 也可以把图像按规定大小进行缩放,试了一下感觉PaintPicture的速度比StretchBlt快一些。
PaintPicture的 函数定义为:
Sub PaintPicture(Picture As IPictureDisp, X1 As Single, Y1 As Single, [Width1], [Height1], [X2], [Y2], [Width2], [Height2], [Opcode])
X1 和Y1是目标位置,Width1和Height1是目标大小,默认是PictureBox的大小,X2和Y2是源位置,Width2和Height2是源 大小,Opcode是操作方式,默认应该是vbSrcCopy,如果Width1、Height1和Width2、Height2的大小不一样则进行缩 放。
新建一个工程,设置Form1的ScaleMode为“3 - Pixel”,往窗体上放1个FileListBox控件名称为 File1,1个ImageList控件名称为ImageList1,2个PictureBox控件,一个名称为Picture1,AutoResize 为True,Visible为False,另外一个名称为Picture2,AutoRedraw为True,Visible为False,Width和 Height为128,1个ListView控件名称为ListView1,将图像列表中普通设置为ImageList1。
在窗体里添加如 下代码:
' 窗体载入时载入图像列表Private Sub Form_Load()Dim i As LongFor i = 0 To File1.ListCount - 1' 载入图像Picture1.Picture = LoadPicture(File1.Path & "\" & File1.List(i))' 生成缩略图Picture2.PaintPicture Picture1.Picture, 0, 0' 添加缩略图到ImageListImageList1.ListImages.Add , , Picture2.Image' 添加缩略图到ListViewListView1.ListItems.Add , , File1.List(i), i + 1DoEventsNextEnd Sub' 窗体改变大小时改变ListView的大小Private Sub Form_Resize()With ListView1.Top = 0.Left = 0.Width = Me.ScaleWidth.Height = Me.ScaleHeightEnd WithEnd Sub
0 条评论。