- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学生设计成果示例(11)--几何绘图 学生设计成果示例(12)--小区沙盘 学生设计成果示例(13)--图像处理 学生设计成果示例(14)--城镇规划 学生设计成果示例(15)--集成电路 学生设计成果示例(16)--虚拟教室 学生设计成果示例(17)--网络聊天 学生设计成果示例(18)--多机制图 学生设计成果示例(19)--天气预报 学生设计成果示例(20)--物理实验 设计指导7 句柄的设计和处理 句柄也称为控制点,可以用黑色的小方框表示。 比如矩形的句柄个数是8个,这8个句柄将矩形的4个顶点和4条边中间的点作为控制点。 对于曲线而言,可以把构成曲线的点作为句柄。 对于文本来说,可以选择文字所在矩形的左上角和右上角两个点作为控制点。 在DrawObject类中添加句柄处理的抽象方法。 以DrawRectangle类为例,说明如何实现DrawObject类的抽象方法。 设计指导8 鼠标指针状态控制 鼠标指针状态有3种: 绘制状态、非绘制状态和选择状态。 为了判断鼠标的指针状态 添加一个ToolPointer类。ToolPointer类中定义了一个枚举SelectionMode,该枚举有None、NetSelection、Move和Size四个值。 MouseDown、MouseMove和MouseUp事件中分别进行几种状态的转换 None是初始状态、 NetSelection是选择图形图像状态,绘制矩形选择框的虚框(即绘制一个灰色的矩形,使其包含所选择的图形图像对象) Move是移动选中的对象 Size是调整图形图像的大小。 设计指导8 鼠标指针状态控制 【例6】在例5的基础上实现图形图像的选中、缩放、平移等效果。 运行效果: 设计指导9 多机联合绘图架构设计 关键点 继承机制 双缓冲 如何传输:字符串、字节数组 序列化与反序列化 导出对象 打印预览 设计指导9 多机联合绘图架构设计 9-1 综述 主机和附机 任何一台计算机都可以作为主机,但一旦某台计算机作为主机后,连接到该机的其他同时制图的计算机只能作为附机。 系统要求必须有一台计算机作为主机,并且只能有一个主机。只有当主机进入制作界面之后,其他附机才能进入制作界面。当主机退出制作界面之后,所有的附机都将无法继续制作。 系统功能要求 (1)图形绘制:完成基本图形绘制功能,如曲线、矩形、椭圆等。 (2)图像绘制:以透明方式显示任意图像,并能实现图像的缩放。 (3)文字绘制:能在任意位置显示指定大小的文字,并能旋转。 (4)导出图片:能将绘制的对象导出为jpg图像文件、并提供打印与打印预览功能。 (5)使用鼠标选中一个或多个图形图像对象时,可以移动或删除选中的对象。 (6)保存绘图对象后,下次运行程序可以打开原来绘制的对象,并能在原来的基础上继续绘制,也可以修改已有的对象。 (7)用户可以在多台机器上同时绘制同一张图的不同部分,而且大家看到的界面是一样的。 设计指导(9-2) 类设计 1.绘图对象类设计 为了统一管理各种绘图对象,可以将要绘制的对象抽取成一个抽象基类DrawObject,而其他绘制的对象类则从DrawObject继承,在扩充类中,通过重写DrawObject类的属性和方法,即可实现针对特定图形图像的绘制。 设计指导(9-2) 类设计 2.工具类设计 当用户使用鼠标拖放绘制、选中和移动对象时,都会用到窗体或控件的MouseMove、MouseDown和MouseUp事件。对于不同的对象,这些鼠标事件中的实现代码也不尽相同,为此需要提供一个实现图形图像鼠标控制的基类ToolObject 。 设计指导(9-2) 类设计 3.其他类设计:公共类以及进行主机和附机通信的类的设计 (1)ObjectID类提供为图形图像对象创建ID的方法。 (2)CC类提供系统公用的属性和方法定义。 (3)GraphicsList类保存绘制对象的列表,同时实现绘图对象的查找、删除、选择等功能。绘制对象列表由ListDrawObject类型的字段来进行维护。 (4)User类封装与服务器通信的客户端信息。 (5)MyClient类封装附机的相关信息,提供附机向主机发送信息以及从主机接收信息的相关处理方法。 (6)MyServer类封装主机的相关信息,提供主机向附机发送信息以及从附机接收信息的相关处理方法。 设计指导(9-3)主机和附机 在主机和附机的通信中,主机收到附机发送的字符信息后,需要解析字符串的含义,并确定主机需要执行的操作。对于附机来说,亦是如此。字符串分为命令部分和参数部分,命令部分和参数部分之间以及参数部分的各个参数之间均用逗号分隔。 主机发给附机的命令 附机发给主机的命令 设计指导(9-4)具体实现 画板设计 为了解决在P
文档评论(0)