C#网络应用编程 第2版 教学课件 PPT 作者 马骏 第12章 网络应用开发综合实例

上传人:E**** 文档编号:89344710 上传时间:2019-05-23 格式:PPT 页数:27 大小:988KB
返回 下载 相关 举报
C#网络应用编程 第2版  教学课件 PPT 作者 马骏 第12章 网络应用开发综合实例_第1页
第1页 / 共27页
C#网络应用编程 第2版  教学课件 PPT 作者 马骏 第12章 网络应用开发综合实例_第2页
第2页 / 共27页
C#网络应用编程 第2版  教学课件 PPT 作者 马骏 第12章 网络应用开发综合实例_第3页
第3页 / 共27页
C#网络应用编程 第2版  教学课件 PPT 作者 马骏 第12章 网络应用开发综合实例_第4页
第4页 / 共27页
C#网络应用编程 第2版  教学课件 PPT 作者 马骏 第12章 网络应用开发综合实例_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《C#网络应用编程 第2版 教学课件 PPT 作者 马骏 第12章 网络应用开发综合实例》由会员分享,可在线阅读,更多相关《C#网络应用编程 第2版 教学课件 PPT 作者 马骏 第12章 网络应用开发综合实例(27页珍藏版)》请在金锄头文库上搜索。

1、第12章 网络应用开发综合实例,12.1 单机图形图像绘制方法 12.2 多机联合绘图架构设计 12.3 多机联合绘图系统具体实现,本章说明,背景知识 GDI+基础知识(没有学过这部分内容的读者,请首先阅读相关内容,C#程序设计及应用教程(第2版)(马骏主编,人民邮电出版社出版,书号:978-7-115-19825)有关于GDI+比较详细的介绍) 本章内容讲解办法 根据教学进度和学生实验情况,将本章穿插到本学期其他章节中讲解,目的是为顺利完成设计型实验提供指导。,12.1.1 将图形图像作为对象,将图形图像作为对象。 当同时绘制多个图形图像时,使用类对象更容易处理。 【例6-1】使用鼠标在Pa

2、nel内绘制任意大小的椭圆。 运行效果:,12.1.2 鼠标事件处理,1.当拖动鼠标在窗体或控件上实现图形绘制和平移时,都会用到窗体或控件的鼠标事件。常用的鼠标事件有MouseDown事件、MouseMove事件和MouseUp事件。,MouseDown,MouseMove,MouseUp,用户在窗体或控件上按下鼠标左键 时,会触发MouseDown事件,可以 在此事件中捕获鼠标所在位置的 点的坐标。,可以持续获得鼠标移动时经过的一 系列点的坐标,从而控制图形的大小,用户释放鼠标左键时, 会触发MouseUp事件,12.1.2 鼠标事件处理,2.为了区分绘制和平移等鼠标操作,定义一个类封装对应

3、的MouseDown、MouseMove和MouseUp事件,并将其声明为virtual。当用鼠标绘制和平移对象时分别从该类派生,重写对应的鼠标事件。,12.1.2 鼠标事件处理(续),public class ToolPointer:ToolObject public override void OnMouseDown(MouseEventArgs e) /实现代码 public override void OnMouseMove(MouseEventArgs e) /实现代码 public override void OnMouseUp(MouseEventArgs e) /实现代码 ,1

4、2.1.2 鼠标事件处理(续),ToolObject类对鼠标事件进行封装。ToolRectangle类从ToolObject类继承,它表示使用鼠标实现矩形的绘制。ToolPointer类从ToolObject类继承,它表示使用鼠标实现绘制对象的选中和平移等功能。,12.1.2 鼠标事件处理(续),为了统一管理绘制对象的平移和绘制操作,定义ToolObject类型的变量activeTool表示当前活动的对象。 若实现绘制对象的平移效果, 则activeTool=new ToolPointer();。 若实现矩形绘制, 则activeTool=new ToolRectangle();。,12.1.

5、2 鼠标事件处理(续),调用时根据C#执行时调用声明为virtual方法的原则。如果当前创建的是ToolRectangle类的实例,则就会调用ToolRectangle中相应的鼠标事件。 private void panel1_MouseDown(object sender, MouseEventArgs e) panel1.Capture = false; if (e.Button = MouseButtons.Left) activeTool.OnMouseDown(e); ,12.1.3 绘制任意大小的基本图形,【例6-2】绘制任意大小的矩形。 运行效果:,12.1.4 绘制任意形状的曲

6、线,程序举例:【例12-3】绘制任意形状的曲线 运行效果:,12.1.5 绘制任意大小和方向旋转的文字,程序举例:【例12-4】绘制任意大小和方向旋转的文字 运行效果:,12.1.6 绘制任意大小的图像,程序举例:【例12-5】绘制任意大小的图像 运行效果:,12.1.7 句柄的设计和处理,句柄也称为控制点,可以用黑色的小方框表示。 比如矩形的句柄个数是8个,这8个句柄将矩形的4个顶点和4条边中间的点作为控制点。 对于曲线而言,可以把构成曲线的点作为句柄。 对于文本来说,可以选择文字所在矩形的左上角和右下角两个点作为控制点。 在DrawObject类中添加句柄处理的抽象方法。 以DrawRec

7、tangle类为例,说明如何实现DrawObject类的抽象方法。,12.1.8 鼠标指针状态控制,鼠标指针状态有3种: 绘制状态、非绘制状态和选择状态。 为了判断鼠标的指针状态 添加一个ToolPointer类。ToolPointer类中定义了一个枚举SelectionMode,该枚举有None、NetSelection、Move和Size四个值。 MouseDown、MouseMove和MouseUp事件中分别进行几种状态的转换 None是初始状态、 NetSelection是选择图形图像状态,绘制矩形选择框的虚框(即绘制一个透明的矩形,使其包含所选择的图形图像对象) Move是移动选中的

8、对象 Size是调整图形图像的大小。,12.1.8 鼠标指针状态控制,【例12-6】在例12-5的基础上实现图形图像的选中、缩放、平移等效果。 运行效果:,12.2 多机联合绘图架构设计,12.2.1 系统概述 主机和附机 任何一台计算机都可以作为主机,但一旦某台计算机作为主机后,连接到该机的其他同时制图的计算机只能作为附机。 系统要求必须有一台计算机作为主机,并且只能有一个主机。只有当主机进入制作界面之后,其他附机才能进入制作界面。当主机退出制作界面之后,所有的附机都将无法继续制作。 系统功能要求 (1)图形绘制:完成基本图形绘制功能,如曲线、矩形、椭圆等。 (2)图像绘制:以透明方式显示任

9、意图像,并能实现图像的缩放。 (3)文字绘制:能在任意位置显示指定大小的文字,并能旋转。 (4)导出图片:能将绘制的对象导出为jpg图像文件、并提供打印与打印预览功能。 (5)使用鼠标选中一个或多个图形图像对象时,可以移动或删除选中的对象。 (6)保存绘图对象后,下次运行程序可以打开原来绘制的对象,并能在原来的基础上继续绘制,也可以修改已有的对象。 (7)用户可以在多台机器上同时绘制同一张图的不同部分,而且大家看到的界面是一样的。,12.2.2 类设计,1绘图对象类设计 为了统一管理各种绘图对象,可以将要绘制的对象抽取成一个抽象基类DrawObject,而其他绘制的对象类则从DrawObjec

10、t继承,在扩充类中,通过重写DrawObject类的属性和方法,即可实现针对特定图形图像的绘制。,12.2.2 类设计(续),2工具类设计 当用户使用鼠标拖放绘制、选中和移动对象时,都会用到窗体或控件的MouseMove、MouseDown和MouseUp事件。对于不同的对象,这些鼠标事件中的实现代码也不尽相同,为此需要提供一个实现图形图像鼠标控制的基类ToolObject 。,12.2.2 类设计(续),3其他类设计:公共类以及进行主机和附机通信的类的设计 (1)ObjectID类提供为图形图像对象创建ID的方法。 (2)CC类提供系统公用的属性和方法定义。 (3)GraphicsList类

11、保存绘制对象的列表,同时实现绘图对象的查找、删除、选择等功能。绘制对象列表由List类型的字段来进行维护。 (4)User类封装与服务器通信的客户端信息。 (5)MyClient类封装附机的相关信息,提供附机向主机发送信息以及从主机接收信息的相关处理方法。 (6)MyServer类封装主机的相关信息,提供主机向附机发送信息以及从附机接收信息的相关处理方法。,12.2.3 主机和附机,在主机和附机的通信中,主机收到附机的发送的字符信息后,需要解析字符串的含义,并确定主机需要执行的操作。对于附机来说,亦是如此。字符串分为命令部分和参数部分,命令部分和参数部分之间以及参数部分的各个参数之间均用逗号分

12、隔。 主机发给附机的命令 附机发给主机的命令,12.3 多机联合绘图系统具体实现,画板设计 为了解决在Panel控件上绘图的闪烁问题,使用用户控件作 为绘图画板,然后将用户控件的双缓冲属性【DoubleBuffer ed】的值设置为true即可。 【例12-7】 创建多机联合绘图应用程序,实现画板的设计。 2.多机同步控制 通过发送相应的命令实现。 【例12-8】 在例12-7的基础上实现多机同步控制功能。,12.3 多机联合绘图系统具体实现,3.序列化与反序列化 绘图对象的序列化与反序列化有两个用途: 一是传输图像时要进行序列化与反序列化 二是保存文件时需要序列化,打开文件时需要反序列化。

13、最简单的办法就是给类添加Serializable特性 通过实现ISerializable接口的GetObjectData方法 GetObjectData方法在序列化时会自动调用它,并使用SerializationInfo类存储将对象序列化与反序列化的全部数据。 在序列化时,使用AddValue方法将对象添加到SerializationInfo存储区中 反序列化时,使用GetValue方法从SerializationInfo存储区中提取对象。,12.3 多机联合绘图系统具体实现,4.图像的打印和预览 打印功能的实现主要用到PrintPreviewDialog对话框和PrintDocument类。其中PrintPreviewDialog实现打印预览功能,PrintDocument实现打印功能。P360 5.导出图片功能 使用Image类的save方法将对象保存为图片实现导出功能。,12.3 多机联合绘图系统具体实现,6.完整实现及扩展建议 各种运行界面截图,12.3 多机联合绘图系统具体实现,6.完整实现及扩展建议 实现椭圆、多边形、菱形,圆柱和圆锥等图形的绘制。 多机联合电路图制作 多机联合化学仪器制作 多机小区规划设计 多机数学几何助手 多机数据流程图绘制 多机导游图设计等系统。,12.3 多机联合绘图系统具体实现,习题1、习题2,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号