实例说明
在本实例中,我们将创建一个能够浏览图片内容的应用程序。当选中所要显示的图片文件名时,应用程序就会显示出图片的内容。运行结果如图66-1所示。
图66-1 运行结果
技术要点
l 文件管理控件的使用(Drive,List,File控件)
l 滚动条的使用
l 缩放图片
实现步骤
■ 新建项目
打开Visual Studio.NET,选择"新建项目",在项目类型窗口中选择"Visual Basic项目",在模板窗口中选择"Windows应用程序",在名称域中输入"PicViewer",然后选择保存路径。单击"确认"。
■ 添加控件
向当前窗体上添加一个DriveListBox控件,一个DirListBox控件,一个FileListBox控件,用来确定图形文件的位置。另外添加两个Picture控件,用于控制图形的显示。另外是一个CheckBox用于控制是否按照控件大小缩放图形,一个Button按钮用来退出程序。还需要添加一个HscrollBar控件和一个VscrollBar控件,当图片不缩放时,且图片大小超出显示区域时,则HscrollBar控件和VscrollBar控件可用。
■ 设置属性
切换到"属性栏",对控件进行属性设置,详细情况见表66-1。
表66-1 控件属性值
窗体/控件 属性 值
Check1 Value 1-Checked
VscrollBar1 Name vsc
HscrollBar1 Name hsc
Picture1 Name Picview
Button1 Text 退出
Picture11 Sizemode StretchImage
'是否缩放图形
Private Sub Check1_CheckStateChanged(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Check1.CheckStateChanged
If Check1.CheckState Then
'如果是,则需要重新设置Image控件的大小,否则不能正确显示
Image1.Left = 0
Image1.Top = 0
Image1.Height = picview.Height - 10
Image1.Width = picview.Width - 10
'设置缩放属性为真
Image1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
ShowPic()
Else
Image1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Normal
ShowPic()
End If
End Sub
'退出应用程序
Private Sub Button1_Click(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
Private Sub Dir1_Change(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Dir1.Change
File1.Path = Dir1.Path
If File1.FileName = "" Then
Exit Sub
Else
picview.BackgroundImage = System.Drawing.Image.FromFile("")
End If
End Sub
'当驱动器改变时,目录作相应的改变
Private Sub Drive1_SelectedIndexChanged(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Drive1.SelectedIndexChanged
Dir1.Path = Drive1.Drive
End Sub
Private Sub File1_SelectedIndexChanged(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles File1.SelectedIndexChanged
ShowPic()
End Sub
Sub ShowPic()
If File1.FileName = "" Then
Exit Sub
End If
Image1.Image = System.Drawing.Image.FromFile(File1.Path & "/" & File1.FileName)
'将图片的高和宽与picview的高和宽进行比较,如果都小于,则不显示滚动条
If Image1.Width > picview.Width Then
'如果宽大于picview的宽,则显示水平滚动条
Image1.Left = 0
hsc.Visible = True
hsc.Value = 0
hsc.Maximum = Image1.Width - picview.Width + hsc.LargeChange - 1
hsc.SmallChange = Image1.Width / 20
hsc.LargeChange = Image1.Width / 10
Else
Image1.Left = (picview.Width - Image1.Width) / 2
hsc.Visible = False
End If
'如果高大于picview的高,则显示垂直滚动条
If VB6.PixelsToTwipsY(Image1.Height) > VB6.PixelsToTwipsY(picview.Height) Then
Image1.Top = VB6.TwipsToPixelsY(0)
vsc.Visible = True
vsc.Value = 0
vsc.Maximum = Image1.Height - picview.Height + vsc.LargeChange - 1
vsc.SmallChange = Image1.Height / 20
vsc.LargeChange = Image1.Height / 10
Else
Image1.Top = (picview.Height - Image1.Height) / 2
vsc.Visible = False
End If
End Sub
'横向移动滚动条
Private Sub hsc_Scroll(ByVal eventSender As System.Object,ByVal eventArgs As System.Windows.Forms.ScrollEventArgs) Handles hsc.Scroll
Select Case eventArgs.Type
Case System.Windows.Forms.ScrollEventType.EndScroll
Image1.Left = eventArgs.NewValue
End Select
End Sub
'纵向移动滚动条
Private Sub vsc_Scroll(ByVal eventSender As System.Object,ByVal eventArgs As System.Windows.Forms.ScrollEventArgs) Handles vsc.Scroll
Select Case eventArgs.Type
Case System.Windows.Forms.ScrollEventType.EndScroll
Image1.Top = eventArgs.NewValue
End Select
End Sub
■ 运行程序
单击菜单"调试|启动"或单击 图标运行程序。
小结
通过本实例,我们掌握了文件管理控件的使用方法和设置文件列表框过滤文件的方法。并通过滚动条来实现大图浏览,达到浏览全图的目的。同时,我们也设置一个缩放图形的选项,可以使图形的大小适应控件的大小,从而更方便使用。