1C#程序设计实训报告系(部)计算机系专业班级姓名学号实训基地(实训室)实训项目图片管理器实训日期2012-6-19~2012-6-21实训组号实训成绩指导教师2第一部分:实训目的(1)常用控件的各种特性和使用。(2)掌握各种类型变量的使用和相互间的转换。(3)掌握图像绘制。(4)掌握方法的定义和调用。(5)学习如何利用代码实现简单的逻辑。(6)掌握菜单和工具栏的使用。第二部分:实训准备(包含实训设备及器材)1.实训设备及器材需安装有visualstudio2005的电脑一台.第三部分:实训要求实训内容:制作一个图片管理器,它可以让用户对自己的图片进行分类管理。(1)对图片实现分目录管理,用户可以自行创建并删除存放图片的目录,并可以方便地将各种图片存放于相应的目录之中。(2)可以对目录下的图片以缩略图的方式进行浏览,用户可以从众多图片中查找出自己想要的图片。3第四部分:实训内容(步骤及程序)实训步骤:(1)界面设计程序共包括三个窗体。A.Form1:程序的主窗体,用于浏览和查看图片,并对图片进行管理。B.郑漫霞_FrmCreateFolder:创建目录窗体,用于创建图片的管理目录。C.郑漫霞_FrmLoadPic:导入图片窗体,用于向目录中导入图片。A.Form1主窗体(1)新建一个项目,命名为”图片管理器—郑漫霞”.(2)窗体命名为Form1,设置它的属性如下所示.属性值说明Text图片管理器Size640,460窗体尺寸MinimumSize640,460窗体的最小尺寸DoubleBufferedTrue开双缓冲StartPositionCenterScree窗体打开后默认位于屏幕中央(3)在窗体中添加一个ToolStrip(工具栏)控件,命名为tsMain.4属性值说明ImageScalingSize(32,32)工具栏项上的图像的大小工具栏上3个按钮的设置按钮增加目录导入图片退出属性TexttsbtnCreateFoldertsbtnLoadtsbtnCloseDisplayStyleImageAndTextTextAlignBottomCenterTextImageRelationImageAboveText(表示图片位于文字之上)Image(4)在窗体上添加第2个ToolStrip控件,命名为tsViewPic.5属性值ImageScalingSize(24,24)DockBottom在第2个工具栏上添加4个工具按钮,1个组合框.如下所示.返回目录上一张下一张播放组合框tsbtnReturntsbtnPeriodtsbtnNexttsbtnAutoPlaytsbtnIntervaltsbtnReturn(返回目录)的属性设如下表所示属性值说明Text返回目录DisplayStyleImageAndText按钮同时显示图标和文字ImageAlignMiddleLeft按钮图标居左TextAlignMiddleRight按钮文字居右tsbtnInterval(组合框)的属性设置,如下表所示6属性值DropDownStyleDropDownListItems添加”1秒”,”2秒”,”4秒”,”8秒”.确保工具栏上各个控件的AutoToolTip的属性值为true.(5)在窗体上添加1个ListBox控件,命名为lstFolder.并把它的Dock属性设置为Left.(6)在lstFolder控件的右边放置1个Splitter控件,它会自动贴向lstFolder的右边界靠齐,这个控件的作用示可以在程序运行时改变它左边和右边控件的宽度.(7)在Splitter控件的右侧放置1个Panel控件,并把它的Dock属性设置为Fill.这样就可以在程序运行时,通过移动Splitter来调整lstFolder和Panel1的大小.(8)在Panel1上放置1个ListView控件,命名为lvView.它用于显示一个目录下所有图片的缩略图.ListView的属性设置,如下表所示.属性值说明OwnerDrawTrue可以手动绘制各个项的图标ViewLargeIcon以大图标显示每个项7(9)在窗体上放置1个ImageList控件,命名为imglst,把它的ColorDepth属性设置为Depth32Bit(以32位色的形式显示图片).ImageSize(控制ListView各个项的绘图区域的大小)属性设置位(80,90).最后,把LvView控件的LargeImageList属性设置位imglst.(10)在Panel1上放置1个PictureBox控件,命名为pbPic.用于显示单张图片,把它的SizeMode属性设置为AutoSize.(11)在窗体上放置1个OpenFileDialog控件,命名为openFileDialogInput.(12)在窗体上放置1个Timer控件,把它的Interval属性设置为2000.B.郑漫霞_FrmCreateFolder窗体(1)新建一个窗体,命名为郑漫霞_FrmCreateFolder,属性设置所下表所示.属性值说明Text郑漫霞__请输入要添加的目录名称Size345,150窗体尺寸FormBorderStyleFixedDialog窗体样式ShowInTaskbarFalse不在任务栏显示图标StartPositionCenterParent窗体打开后默认位于父窗体中央8(2)在窗体上放置1个TextBox控件,命名为txtFolderName.(3)在窗体上放置2个Button控件,分别命名为btnOK和btnCancel.并把它们的Text属性设置为”确定”和”取消”.窗体最终效果如下图所示.C.郑漫霞_FrmLoadPic窗体(1)新建一个窗体,命名为郑漫霞_FrmLoadPic.属性设置如下表所示.属性值说明Text郑漫霞__导入图片Size448,335窗体尺寸FormBorderStyleFixedDialog窗体样式ShowInTaskbarfalse不在任务栏显示图标StartPositionCenterParent窗体打开后默认位于父窗体中央(2)在窗体上放置1个ComboBox控件,命名为cbFolder.并把它的DropDownStyle属性设置为DropDownList.(3)在窗体上放置1个CheckedListBox控件,命名为chklsPics.并把它的HorizontalScrollbar(使得复选列表框可以显示水平方向的滚动条)属性设置为true.txtFolderNamebtnOKbtnCancel9(4)在窗体上放置2个Label控件,并把它们的Text属性分别设置为”导入到目录”和”添加图片”.(5)在窗体上放置3个Button控件,并把它们的Text属性分别设置为”浏览”,”确定”和”取消”.(6)在窗体上放置1个OpenFileDialogSelPic,并把它的Multiselect属性设置为true.(2)代码编写A.PicInfo-郑漫霞.cs(1)在[解决方案资源管理器]中的[图片管理器—郑漫霞]项目上右击鼠标,在弹出菜单中选择[添加]|[新建项],在[添加新项]窗口中选择[类],在[名称]编辑框输入”PicInfo-郑漫霞.cs”,最后单击[添加]按钮添加一个新的类.(2)在PicInfo-郑漫霞.cs窗口上部引入一个新的命名空间,代码如下:usingSystem.IO;(3)publicoverridestringToString(){return_fullName;}注:重载了ToString()方法,由于PicInfo-郑漫霞类的作用是把类实例作为项存放于复选列表框内,而每个项显示文字正是通过访问ToString()方法而获得,重载这个方法正是为了在复选列表框内显示指定的文字.(4)在”classPicInfo-郑漫霞”类后面的大括号中输入相应的代码.10B.Folder_郑漫霞.cs(1)在[解决方案资源管理器]中的[图片管理器—郑漫霞]项目上右击鼠标,在弹出菜单中选择[添加]|[新建项],在[添加新项]窗口中选择[类],在[名称]编辑框输入”Folder_郑漫霞.cs”,最后单击[添加]按钮添加一个新的类.(2)在Folder_郑漫霞.cs窗口的上部引入一个新的命名空间,代码如下:usingSystem.Collections;usingSystem.IO;usingSystem.Drawing;(3)在”classFolder_郑漫霞”类后面的大括号中输入相应的代码.C.郑漫霞_FrmCreateFolder.cs(1)在郑漫霞_FrmCreateFolder的设计窗体,分别双击[确定]和[取消]按钮,为它们生成按钮的单击事件.(2)在代码窗口上部引入如下命名空间:usingSystem.IO;(3)在郑漫霞_FrmCreateFolder代码窗口上输入相应的代码D.郑漫霞_FrmLoadPic.cs(1)打开郑漫霞_FrmLoadPic窗口,并在它的代码窗口处引入命名空间如下:11usingSystem.IO;usingSystem.Collections;(2)双击窗口空白处,为窗口生成一个Load事件,并在代码窗口中输入相应的代码.(3)双击[浏览]按钮,生成一个按钮的单击事件.为复选列表框chklsPics生成一个SelectedIndexChange事件.并在代码窗口输入相应的代码.(4)分别双击[确定]和[取消]按钮,为它们生成按钮单击事件,并在代码窗口中输入相应的代码.E.Form1.cs(1)打开Form1的窗口,并在它的代码窗口处引入命名空间如下:usingSystem.IO;usingSystem.Drawing.Imaging;usingSystem.Collections;(2)打开Form1的设计窗体,双击窗体空白处,为窗体生成一个Load事件,并输入相应的代码.(3)双击[增加目录]工具按钮,生成按钮的单击事件,并输入相应的代码.(4)双击[导入图片]工具按钮,生成按钮的单击事件,并输入相应的代码.(5)选中lvView控件,在事件窗口中双击DrawItem事件,生成一个绘图项的事件,并输入相应的代码.12(6)选中列表框lstFolder,为它生成一个SelectedIndexChanged事件,并输入相应的代码.(7)为[退出]工具按钮生成单击事件,并输入相应的代码.(8)选中lvView控件,在事件窗口中双击DoubleClick事件,生成一个双击事件,并输入相应的代码.(9)分别双击窗体下方工具栏的[返回目录],[上一张]和[下一张]工具按钮,为它们生成相应的单击事件,并输入相应的代码.(10)双击[自动播放]按钮,生成一个按钮的单击事件,双击timer1控件,生成一个定时器事件.选中工具栏上的组合框控件,并为它生成一个SelectedIndexChanged事件,并为以上事件方法输入相应的代码.(11)选中pbPic控件,并分别为它生成MouseDown,MouseMove,MouseUp三个事件,并输入相应的代码.注:硬盘和内存读原图两种方式的区别:在第一次浏览一个目录时,需要从硬盘读取这个目录下的所有缩略图并显示,此时所有缩略图被载入内存.只要浏览了某个目录,这个目录下的所有缩略图将会常驻于内存.原图目标夹存在内存存在文件夹13在内存上读原图的代码如下:privatevoidtoolStripButton3_Click(objectsender,EventArgse){if(lstFolder.Items.Count==0){MessageBox.Show(请先添加目录再导入图片---郑漫霞!,消息,MessageBoxButtons.OK,MessageBoxIcon.Information);return;}郑漫霞_FrmLoadPicfrmLoadPic=new郑漫霞_FrmLoadPic(this.lstFolder,this.statusStrip1);tr