您的当前位置:首页正文

C#程序设计实训报告

2020-07-29 来源:好走旅游网


C#程序设计 实训报告

系 (部) 计算机系 专 业 班 级 姓 名 学 号 实训基地(实训室) 实 训 项 目 图片管理器 实 训 日 期 2012-6-19~2012-6-21 实 训 组 号 实 训 成 绩 指 导 教 师

1

第一部分:实训目的 (1) 常用控件的各种特性和使用。 (2) 掌握各种类型变量的使用和相互间的转换。 (3) 掌握图像绘制。 (4) 掌握方法的定义和调用。 (5) 学习如何利用代码实现简单的逻辑。 (6) 掌握菜单和工具栏的使用。 第二部分:实训准备(包含实训设备及器材) 1. 实训设备及器材 需安装有visual studio 2005 的电脑一台. 第三部分:实训要求 实训内容:制作一个图片管理器,它可以让用户对自己的图片进行分类管理。 (1) 对图片实现分目录管理,用户可以自行创建并删除存放图片的目录,并可以方便地将各种图片存放于相应的目录之中。 (2) 可以对目录下的图片以缩略图的方式进行浏览,用户可以从众多图片中查找出自己想要的图片。 2

第四部分:实训内容(步骤及程序) 实训步骤: (1)界面设计 程序共包括三个窗体。 A. Form1:程序的主窗体,用于浏览和查看图片,并对图片进行管理。 B. 郑漫霞_FrmCreateFolder:创建目录窗体,用于创建图片的管理目录。 C. 郑漫霞_FrmLoadPic:导入图片窗体,用于向目录中导入图片。 A. Form1主窗体 (1) 新建一个项目,命名为”图片管理器—郑漫霞”. (2) 窗体命名为Form1,设置它的属性如下所示. 属性 Text Size MinimumSize 值 说明 图片管理器 640,460 640,460 窗体尺寸 窗体的最小尺寸 开双缓冲 DoubleBuffered True StartPosition CenterScree 窗体打开后默认位于屏幕中央 (3) 在窗体中添加一个ToolStrip(工具栏)控件,命名为tsMain. 3

属性 值 说明 工具栏项上的图像的大小 ImageScalingSize (32,32) 工具栏上3个按钮的设置 按钮 属性 DisplayStyle TextAlign TextImageRelation Image Text 增加目录 导入图片 退出 tsbtnCreateFoldtsbtnLoatsbtnCloser d ImageAndText BottomCenter ImageAboveText(表示图片位于文字之上) e (4) 在窗体上添加第2个ToolStrip控件,命名为tsViewPic. 4

属性 ImageScalingSize Dock 在第2个工具栏上添加4个工具按钮,1个组合框.如下所示. 返回目录 上一张 下一张 tsbtnNext 值 (24,24) Bottom 播放 组合框 tsbtnReturtsbtnPerion d tsbtnAutoPlatsbtnIntervay l tsbtnReturn(返回目录)的属性设如下表所示 属性 Text DisplayStyle ImageAlign TextAlign 值 返回目录 ImageAndText MiddleLeft MiddleRight 说明 按钮同时显示图标和文字 按钮图标居左 按钮文字居右 tsbtnInterval(组合框)的属性设置,如下表所示 5

属性 DropDownStyle Items 确保工具栏上各个控件的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的属性设置,如下表所示. 属性 OwnerDraw View 6

值 DropDownList 添加”1秒”,”2秒”,”4秒”,”8秒”. 值 True LargeIcon 说明 可以手动绘制各个项的图标 以大图标显示每个项 (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 Size 值 说明 郑漫霞__请输入要添加的 目录名称 345,150 窗体尺寸 窗体样式 不在任务栏显示图标 窗体打开后默认位于父窗体中央 FormBorderStyle FixedDialog ShowInTaskbar StartPosition 7

False CenterParent (2)在窗体上放置1个TextBox控件,命名为txtFolderName. (3)在窗体上放置2个Button控件,分别命名为btnOK和btnCancel.并把它们的Text属性设置为”确定”和”取消”.窗体最终效果如下图所示. txtFolderName btnOK btnCancel C. 郑漫霞_FrmLoadPic窗体 (1)新建一个窗体,命名为郑漫霞_FrmLoadPic.属性设置如下表所示. 属性 Text Size 值 郑漫霞__导入图片 448,335 说明 窗体尺寸 窗体样式 不在任务栏显示图标 窗体打开后默认位于父窗体中央 FormBorderStyle FixedDialog ShowInTaskbar StartPosition false CenterParent (2)在窗体上放置1个ComboBox控件,命名为cbFolder.并把它的DropDownStyle属性设置为DropDownList. (3)在窗体上放置1个CheckedListBox控件,命名为chklsPics.并把它的HorizontalScrollbar(使得复选列表框可以显示水平方向的滚动条)属性设置为true. 8

(4)在窗体上放置2个Label控件,并把它们的Text属性分别设置为”导入到目录”和”添加图片”. (5)在窗体上放置3个Button控件,并把它们的Text属性分别设置为”浏览”,”确定”和”取消”. (6)在窗体上放置1个OpenFileDialogSelPic,并把它的Multiselect属性设置为true. (2)代码编写 A. PicInfo-郑漫霞.cs (1)在[解决方案资源管理器]中的[图片管理器—郑漫霞]项目上右击鼠标,在弹出菜单中选择[添加]|[新建项],在[添加新项]窗口中选择[类],在[名称]编辑框输入” PicInfo-郑漫霞.cs”,最后单击[添加]按钮添加一个新的类. (2)在PicInfo-郑漫霞.cs窗口上部引入一个新的命名空间,代码如下: using System.IO; (3)public override string ToString() { return_fullName; } 注:重载了ToString()方法,由于PicInfo-郑漫霞类的作用是把类实例作为项存放于复选列表框内,而每个项显示文字正是通过访问ToString()方法而获得,重载这个方法正是为了在复选列表框内显示指定的文字. (4)在”class PicInfo-郑漫霞 ”类后面的大括号中输入相应的代码. 9

B. Folder_郑漫霞.cs (1)在[解决方案资源管理器]中的[图片管理器—郑漫霞]项目上右击鼠标,在弹出菜单中选择[添加]|[新建项],在[添加新项]窗口中选择[类],在[名称]编辑框输入” Folder_郑漫霞.cs ”,最后单击[添加]按钮添加一个新的类. (2)在Folder_郑漫霞.cs窗口的上部引入一个新的命名空间,代码如下: using System.Collections; using System.IO; using System.Drawing; (3)在”class Folder_郑漫霞”类后面的大括号中输入相应的代码. C. 郑漫霞_FrmCreateFolder.cs (1)在郑漫霞_FrmCreateFolder的设计窗体,分别双击[确定]和[取消]按钮,为它们生成按钮的单击事件. (2)在代码窗口上部引入如下命名空间: using System.IO; (3)在郑漫霞_FrmCreateFolder代码窗口上输入相应的代码 D. 郑漫霞_FrmLoadPic.cs (1)打开郑漫霞_FrmLoadPic窗口,并在它的代码窗口处引入命名空间如下: 10

using System.IO; using System.Collections; (2)双击窗口空白处,为窗口生成一个Load事件,并在代码窗口中输入相应的代码. (3)双击[浏览]按钮,生成一个按钮的单击事件.为复选列表框chklsPics生成一个SelectedIndexChange事件.并在代码窗口输入相应的代码. (4)分别双击[确定]和[取消]按钮,为它们生成按钮单击事件,并在代码窗口中输入相应的代码. E.Form1.cs (1)打开Form1的窗口,并在它的代码窗口处引入命名空间如下: using System.IO; using System.Drawing.Imaging; using System.Collections; (2)打开Form1的设计窗体,双击窗体空白处,为窗体生成一个Load事件,并输入相应的代码. (3)双击[增加目录]工具按钮,生成按钮的单击事件,并输入相应的代码. (4)双击[导入图片]工具按钮, 生成按钮的单击事件,并输入相应的代码. (5)选中lvView控件,在事件窗口中双击DrawItem事件,生成一个绘图项的事件,并输入相应的代码. 11

(6)选中列表框lstFolder,为它生成一个SelectedIndexChanged事件,并输入相应的代码. (7)为[退出]工具按钮生成单击事件, 并输入相应的代码. (8)选中lvView控件,在事件窗口中双击DoubleClick事件,生成一个双击事件, 并输入相应的代码. (9)分别双击窗体下方工具栏的[返回目录],[上一张]和[下一张]工具按钮,为它们生成相应的单击事件, 并输入相应的代码. (10)双击[自动播放]按钮,生成一个按钮的单击事件,双击timer1控件,生成一个定时器事件.选中工具栏上的组合框控件,并为它生成一个SelectedIndexChanged事件,并为以上事件方法输入相应的代码. (11)选中pbPic控件,并分别为它生成MouseDown,MouseMove,MouseUp三个事件, 并输入相应的代码. 注: 硬盘和内存读原图两种方式的区别: 存在内存 存在文件夹 原图 目标夹 在第一次浏览一个目录时,需要从硬盘读取这个目录下的所有缩略图并显示,此时所有缩略图被载入内存.只要浏览了某个目录,这个目录下的所有缩略图将会常驻于内存. 12

在内存上读原图的代码如下: private void toolStripButton3_Click(object sender, EventArgs e) { if (lstFolder.Items.Count == 0) { MessageBox.Show(\"请先添加目录再导入图片---郑漫霞!\消息\MessageBoxButtons.OK, MessageBoxIcon.Information); return; } 郑漫霞_FrmLoadPic frmLoadPic = new郑漫霞_FrmLoadPic(this.lstFolder, this.statusStrip1); try { if (frmLoadPic.ShowDialog(this) == DialogResult.OK) { LoadToListView(); } } finally { frmLoadPic.Dispose(); } } private void LoadToListView() { Folder_郑漫霞 folder = (Folder_郑漫霞)lstFolder.SelectedItem; lvView.BeginUpdate(); lvView.Items.Clear(); if (!folder.IsLoaded) { folder.LoadImage(); } foreach (DictionaryEntry de in folder.bmps) { lvView.Items.Add((string)de.Key); } lvView.EndUpdate(); } 在硬盘上读原图的代码如下: 13

Foreach(string str in Directory.GetFiles(folder.GetThumbnialPath())) lvView.Items.Add(path.GetFileName(str)); 需要在lvView的代码中: Bitmap bmp=folder.GetThumbnail(e.Item.Text); 改为 Bitmap bmp=(folder.GetThumbnailPath()+”\\\\”+e.Item.Text); 第五部分:实训结果(结果分析) (1)当你刚开始调试时,将会出现下图所示的窗口: (2)当你点击[增加目录]时,会显示下图所示的窗口: 14

(3)当你点击[导入图片]时, 会显示下图所示的窗口: (4)当你点击一张图片时, 会显示下图所示的窗口: 15

第六部分:实训小结(心得及体会) 在这次实训中,都说当局者迷,可能是很简单的属性设置的问题,或者是那个全角半角的句号,也许是你想不到的边边角角的问题,你却怎么也检查不出来的问题,多和同学交流也许很快就解决了.大家要知道,通过网络的搜索,很快会找到很多,有关的话题的解决方法,很多你遇到的问题,很有可能,早就被别人发现,发现的同时也被其他人解决了.你会在寻找问题的答案中,获得进步. 编程和其他事情也是一样的,最烦的就是套用老方式和老方法,你可以充分利用现有的对象,进行细化和增加新的属性,创新是编程最大的灵感. 不断的总结中,你会发现,你的进步,同时也存在很多的不足,所以,你要不断的改进你的学习方法,使之不断进步,编程的本身是一项创造性的工作,它能让你在不断的总结中不断的成熟. 16

因篇幅问题不能全部显示,请点此查看更多更全内容