《面向对象程序设计实验》指导书
- 格式:doc
- 大小:99.00 KB
- 文档页数:24
《面向对象程序设计实验》 指导书
实验日期 实验1 11.20 实验2 :11.27 实验3:12.4
适应专业:通信工程06级~08级 学 时:16 执 笔 人:杨崇 实验一制作图片浏览器 一 实验目的:学习并掌握Visual Basic基本控件的使用,学习并掌握Visual Basic6.0的基本语法规则,理解并掌握容器的概念,掌握面向对象编程的基本原理与方法。 二 实验内容: 利用PicturBoxe、Image控件结合文件系统空间制作支持多种静态图片文件格式的浏览器。 三 实验原理: Visual Basic6.0支持几乎全部的图片格式,包括BMP,JPG GIF ,CUR,ICO等格式,通过文件系统控件可以访问到全部本地磁盘、软盘、光盘、移动存储设备以及局域网内用油访问权限的逻辑磁盘上的文件,通过利用FileListBox 控件的文件过滤功能,将可显示的图片罗列出来后在Image控件中进行显示。 PictureBox控件是一款用来加载和处理图片的控件,它不仅仅可以用来显示图片,而且可以加载上面的图片进行更高级的编辑,如按位操作、像素级图像处理等,PictureBox拥有独立的坐标系统,可作为容器来加载其他控件。 Image控件是一款专门用来显示图片的控件,它可以显示全部图像格式,同时由于具备Stretch属性,可以使图像按照Image控件的二维视图区域进行显示,又由于该控件占用的内存空间比PictureBox控件小得多,因此在不对图像进行处理的场合下应优先选择。 加载图像使用VB自带的LoadPicture函数,它的引用方法为: Picture1.picture=LoadPicture (Pathname) Image1.picture= LoadPicture (Pathname) 其中Picture1为图片框控件PictureBox的对象引用名称,Image1为图像框控件Image的对象引用名称。 Pathname为图片文件的路径。 由于本实验仅仅涉及图片的浏览,因此建议使用Image控件。同时,显示过程中为了保证图像显示的完整性,应该使Image控件的大小符合图片自身的大小,在支持缩放时,图片的高和宽两项参数应该按比例同时发生变化。 在显示图片时,首先应该将Image控件的Visible属性设置为False,Stretch属性设置为False,此时,Image控件不可见,同时,加载图片后,Image控件的大小与图片的原始大小相同。为了适应显示窗口,需要选择具有独立坐标系统的PictureBox控件作为显示区,并要求Image控件在PictureBox的限定范围内显示全部的图像信息。 由于图片的自身大小各异,高宽比(Height/Width)未知,因此,为了在限定显示区内显示全部图片信息,应该考虑图像自身高宽比与显示区高宽比的关系,它们的比例关系有如下两种情况,见下图:
显示区 显示区 图1 图2 在图1中,图片的高宽比小于显示区的高宽比,此时,为了显示全部图像信息,应将图片的高度等同于显示区的高度,而宽度则按比例做适应性调整。 在图2中,图片的高宽比大于显示区的高宽比,此时,为了显示全部图像信息,应将图片的宽度等同于显示区的宽度,而高度则按比例做适应性调整。 当然,若图片与显示区高宽比相同,则按上述两种情况之一执行即可。当图片的大小小于显示区,可直接进行显示不必进行调整。 另外,在对图片进行浏览、缩放时需要对图片进行居中调整,可使显示效果更加美观。 图片的TOP属性=(显示区域高度-图片高度)/2 图片Left属性=(显示区域宽度-图片宽度)/2 具体示例代码如下:
图片 图片 Dim WHP As Single ‘定义图片框控件高宽比的变量 Dim WHF As Single ‘定义图像框控件(显示区域)高宽比的变量 Image1.Visible = False ‘设置图片框不可见,避免显示抖动 Image1.Stretch = False ‘设置图片框大小等同于随图片大小 Image1.Picture = LoadPicture(Pathname) ‘加载图片到图片框 WHP = Image1.Width / Image1.Height ‘取得图片框即原始图像的高宽比 WHF = Picture1.Width / Picture1.Height ‘取得图像框即显示区域的高宽比 If WHP >= WHF Then 判断,若图片框高宽比大于或等于图像框高宽比 Image1.Width = Picture1.Width Image1.Height = Image1.Width / WHP ‘调整图片框宽度和高度参数 Else ‘否则,若图片框高宽比小于图像框高宽比 Image1.Height = Picture1.Height Image1.Width = Image1.Height * WHP ‘调整图片框宽度和高度参数 End If Image1.Top = (Picture1.Height - Image1.Height) / 2 Image1.Left = (Picture1.Width - Image1.Width) / 2 ‘居中调整图片框 Image1.Stretch = True ‘拉伸图片到合适大小 Image1.Visible = True ‘显示图片 四、实验步骤 1 新建工程,名称自拟。 2 添加一个窗体,名称自拟。 3 添加六个Command控件,名称自拟。添加一个Timer控件,设置它的Interval属性为1000。 4 添加一个PictureBox控件,然后再将一个Image控件添加到PictureBox控件上。 5 添加一个DriveListBox控件,一个DirListBox控件,一个FileListBox控件。 6 在DriveListBox控件、DirListBox控件的Change事件中填写代码使三个文件系统控件实现连接互动。在FileListBox控件的Click事件中填写加载图片文件以及位置调整的代码。 7 将六个Command控件的Caption属性分别设置为:“上一个”、“下一个”、“自动播放”、“停止”、“放大”、“缩小”,并在对应的Click事件中填写相关处理代码。 8 选定菜单->文件->保存工程选项,保存工程后,按F5调试程序。 9 打包,发布,异地安装并运行该程序。 10 代码部分自主编写,可参考实验课示例代码。其他可扩展部分自拟,功能应丰富,不拘泥于教师课堂讲授的内容。 五、实验中应注意的问题与思考题: 1 当图片大小小于显示区间时,应使用原来大小现实图片,避免失真。 2 如何保证文件列表控件显示的文件都是可显示文件类型? 3 当加载文件为非法格式时,程序将出错中断,应怎样处理? 4 如何设置慢速自动浏览,快速自动浏览及自定义浏览速度? 5 应用程序界面自行定义,美观大方,不拖沓。 六、实验报告内容: 1 实验原理与要求 2 实验步骤截图 3 程序源代码 4 实验结果截图 5 实验中遇到的问题及解决方案。 6 回答思考题。 实验二 制作圆盘式时钟 一 实验目的: 通过实验了解并掌握Visua Basic坐标系统的特征和开发技巧,了解并掌握Timer 控件和Line、Shape控件的使用方法。培养解决实际问题时数学建模能力。 二 实验内容: 利用Timer 控件和Line、Shape等控件利用制作一个圆盘式时钟。要求时钟的初始化时间与系统时间相同。 三 实验原理: 坐标系统 PC机的屏幕坐标原点位于屏幕的左上方。从左至右为X轴正方向,从上至下为Y轴正方向。如下图 第三象限 第四象限 X
第二象限 Y 圆盘式时钟的示例见下图 X
(0,0)
屏幕 (0,0) 第一象限
秒针 时针 分针 Y 圆盘式时钟的三个指针:时针、分针、秒针均为顺时针旋转。 它们的数学关系如下: 1秒=1/60分=1/3600小时。 而对于圆盘式时钟而言,由于圆周为2π。则秒针单位转动增量弧度为2π/30=π/30。 当每秒钟秒针运行π/30时,分针的转动增量弧度为π/(30×60)=π/1800。 由于圆盘式时钟的一个圆周为12小时,则时针此时的转动增量弧度为: π/(1800×12)=π/21600。 即,每秒钟秒针转动π/30,分针转动π/1800,时针转动π/21600。当顺时针转动时,转动时弧度均为增量。 当某个指针转动一定的角度时,它的坐标位置会随着自身的转动而发生改变,当然,在这里指针的“轴”位置(x1,y1)不会发生改变,发生改变的是指针位置的坐标值(x2,y2)。 转动时,它们的数学关系为:x2 = x1 + Cos(当前弧度) *指针长度。 当前弧度为指针在坐标系统中的弧度值,当指针指向0点时,弧度为3π/2 系统启动时,应保证时钟显示的当前时间与计算机系统的时间一致,此时应该应对指针进行一次初始化。若当前系统时间为14:58:58,此时,将得到系统的小时、分、秒分别为14、58、58,在计算指针初始化弧度时,应考虑三个问题:1 每个指针因为当前时间值带来的弧度偏移量。2 分针除自身时间值带来偏移量外因为秒针偏移量带来的微小偏移 。3时针除自身时间值带来偏移量外因为分针偏移量带来的微小偏移。 如当前时间为14:58:58,则分针的指示位置不应该为指向58分的位置,而应该是很接近59分的位置,同理,时针的位置不该是指向14点(2点),而应该很接近15点(3点)的位置。由于当指针位于零点时初始弧度为3π/2,因此此时它们的具体数学关系如下: 秒针偏移=秒数×2π/60=秒数×π/30。