站场图显示模块详细设计

上传人:jiups****uk12 文档编号:90684342 上传时间:2019-06-15 格式:DOC 页数:46 大小:338.54KB
返回 下载 相关 举报
站场图显示模块详细设计_第1页
第1页 / 共46页
站场图显示模块详细设计_第2页
第2页 / 共46页
站场图显示模块详细设计_第3页
第3页 / 共46页
站场图显示模块详细设计_第4页
第4页 / 共46页
站场图显示模块详细设计_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《站场图显示模块详细设计》由会员分享,可在线阅读,更多相关《站场图显示模块详细设计(46页珍藏版)》请在金锄头文库上搜索。

1、1 站场图显示模块站场图显示模块 详细设计详细设计 2 1.引言引言.4 1.1. 编写目的及背景4 1.2. 定义4 2.站场图模块的结构站场图模块的结构.4 2.1. 物理结构5 2.1.1.Inc 目录.6 2.1.2.Res 目录.7 2.1.3.Src 目录 .7 2.2. 概述8 3.站场图模块设计说明站场图模块设计说明.9 3.1. CZCTVIEW 站场图视图类9 3.1.1.概述.9 3.1.2.主要数据成员描述.9 3.1.3.主要函数描述.10 3.2. CSTATION 站场类.12 3.2.1.概述.12 3.2.2.主要数据成员描述.12 3.2.3.主要函数描述.

2、13 3.3. CSTATIONSET 站集类.19 3.3.1.概述.19 3.3.2.主要数据成员描述.19 3.3.3.主要函数描述.19 3.4. 数据类型24 3.4.1.ObjectType 设备类型枚举24 3.5. CZCTLOADER_INI载入站场图类.25 3.5.1.CZctLoader 类.25 3.5.2.概述.25 3.5.3.主要数据成员描述.25 3.5.4.主要函数描述.25 3.6. CZCTSAVER保存站场图类 28 3.7. CZCTELEMENT站场元素类28 3.7.1.概述.28 3.7.2.主要数据成员描述.28 3.7.3.主要函数描述.3

3、0 3.8. 各种站场图元素类39 3.8.1.道岔表示类.39 3.8.2.道岔类.39 3.8.3.信号机类.40 3.8.4.无岔区段或股道类.41 3.8.5.按钮类.41 3.8.6.表示灯类.42 3 3.8.7.文本类.42 3.8.8.绝缘节类.42 3.8.9.箭头类.43 3.8.10. 车次窗类.43 3.8.11. 脱轨器类.43 3.8.12. 信号楼类.44 3.8.13. 站台类.44 3.8.14. 桥梁类.44 4.使用说明使用说明.44 4 站场图显示模块详细设计站场图显示模块详细设计 1. 引言引言 1.1. 编写目的及背景编写目的及背景 在 CTC 项目

4、中,有多个模块需要显示站场图,且各个模块对站场图的显示和操作有不同 需求,旧站场图模块抽象的功能较为单一,功能已经越来越不能满足各个模块的需求,各 个模块各自实现了自己所需功能,各模块所实现的功能重复性较多,在此前提下,急需把 各个模块所需功能提取出来,扩充旧站场图模块,编写新的站场图模块,新模块提取了各 个模块需求的共性,且最大限度地满足各个模块的使用需求,在原有站场图模块的基础上, 使其结构更加合理,条理清晰,易于扩充。 1.2. 定义定义 站场图模块站场图模块:如未特别说明,指新站场图模块。 站场视图站场视图:用来显示站场图的视图,其程序实现为 CZctView 类。 CZctView:

5、显示站场图的视图类。 CStation:站场类,包含一个站的所有站场元素。 CStationSet:站集类,包含有一个或多个站场类。 CZctElement:所有站场图元素的基类,表示一个站场元素。 单站单站:一个站场所有元素的集合,在程序中用 CStation 类表示。 站集站集:单站的集合,在程序中由 CStationSet 类表示。 ZctElementList:站场图元素列表,其为双向链表结构。 2. 站场图模块的结构站场图模块的结构 站场图模块编写的总体原则为,把各个子功能,在物理和逻辑上都划分清晰,一个逻辑 上的功能在物理上有一个实现文件与之对应,这样便于理解和以后的扩充,整个模块

6、可以 分为 3 部分,现分别描述如下: 一:各个站场图元素,如“道岔”,“信号机”,“按钮”等,这部分主要是对站场图 各个元素的抽象,不同的站场图元素用不同类进行抽象实现。这部分主要放置在 Src/ZctElements 文件夹下,每一类元素对应一个文件。现在实现的站场图元素有 14 种: “按钮”,“箭头”,“表示灯”,“桥梁”,“道岔”,“道岔表示”,“绝缘节”, “信号机”,“信号楼”,“站台”,“脱轨器”,“车次窗”,“区段”和“文本”。 5 二:站场元素的管理,即站和站集。站包含一个站的元素列表,主要来管理这个站的元 素,在程序中由 CStation 类实现。站集包含一个或多个站,可

7、以管理多个站。在程序中由 CStationSet 来实现。 三:站场和站集的显示。程序中的 CZctView 类实现了站场和站集的显示,并支持多种 对站场图的操作。 2.1. 物理结构物理结构 模块的物理组织,即文件和文件夹的组织,模块的所有文件放在 Zctxs 文件夹中,其下 的文件及文件夹如下: inc :存放模块中的所有头文件。 res :存放模块使用的资源文件。 src :程序源文件目录。 ZctModule.cpp: 站场图模块主文件。 为了方便模块的使用,其他模块如需要站场图模块,只要在项目中加入 此一个文件即可,其包含了系统中的其他所有文件。 6 2.1.1. Inc 目录目录

8、AnNiu.h: 按钮类的头文件 Arrow.h: 箭头类的头文件 BiaoShiDeng.h: 表示灯类的头文件 Bridge.h: 桥梁类的头文件 DaoCha.h: 道岔类的头文件 Dcbs.h: 道岔表示的头文件 DisplayPara.h: 显示设置结构头文件 IniFile.h: 读写 INI 文件类的头文件 Jyj.h: 绝缘节类的头文件 LogicKgl.h: 逻辑开关量类的头文件 RealKgl.h: 实际开关量类的头文件 Signal.h: 信号机类的头文件 SignStair.h: 信号楼类的头文件 StaDesktop.h: 站台类的头文件 Station.h: 车站类

9、的头文件 StationSet.h: 站集类的头文件 Tgq.h: 脱轨器类的头文件 Train.h: 车列类的头文件 7 TrainNo.h: 车次窗类的头文件 WcqdorGd.h: 无岔区段或股道类的头文件 WenBen.h: 文本类的头文件 ZctElement.h: 抽象的站场图元素类的头文件 ZctElementCollection.h: 站场图元素集合类的头文件 ZctLoader.h: 站场图载入类的头文件 ZctSaver.h: 站场图保存类的头文件 ZctView.h: 站场图显示类的头文件 Zctxs.h: 预定义头文件 2.1.2. Res 目录目录 2.1.3. Sr

10、c 目录目录 8 2.2. 概述概述 站场图模块采用文档/视图结构,视图类(CZctView)用来显示站场图,文档类 (CStation/CStationSet)来对单站和多站进行管理。为了简化模块的使用,把单站看成是 多站的特例进行统一处理。CStatoinSet 中含有 CStation 的链表,各个单站在站集中由一个 双向链表串接在一起。 开封宁陵县商丘 对站场元素进行抽象,用 CZctElement 类表示,其为抽象类,不能生成具体实例,所有 实际的站场图元素都由该类派生,代表实际的站场图元素,如道岔,信号机等。 CStation 中包含有一个站场元素列表(ZctElementList

11、),站的所有站场元素均在该链表 中。 信号机道岔文本 站场图模块的编写没有考虑多线程程序的使用,如果在多线程程序中使用该模块,程序 中要保证数据的一致性。 为了消除屏幕的闪烁,站场图的显示采用双缓冲,建立一个内存图,所有的绘图操作发 生在内存图上,绘制好后再贴到屏幕上。内存图的大小和屏幕的大小一致,在屏幕大小改 变时为了减少频繁生成内存位图,在屏幕大小变小时不重新生成内存位图,而用原来的内 存位图。 为了提高效率,减少绘制时的工作量,在绘制运行图元素时,仅绘制屏幕可见元素,略 过不可见元素的绘制。每个元素都有一个可视矩形区域,该区域不包括元素的名称,如果 该区域和窗口视图区域(CZctView

12、)有重叠,则认为该元素可见。 在站集多屏幕情形下,所有的元素都可见时,如果一个元素的状态发生变化,绘制一个 站的所有元素,也会有非常大工作量,在模块中采取只绘制状态发生变化的元素。但如此 的话将会引发新的问题,即有些元素状态发生变化前后的画法不一致,这就要求首先清除 元素,然后再按新的画法进行绘制,清除元素有多种方式,其一,就是取得元素的显示矩 形,然后用视图背景色进行填充,这样会把此区域中的其他元素也清掉,对于“道岔”特 别明显,这种方法也不能清掉元素的名称。其二为用背景色重新绘制该元素,程序中即采 取此种方法。清除掉旧的状态,再按新状态绘制元素,仅绘制状态发生变化的元素,cpu 占用率可降

13、至最低。 当元素的状态发生变化,按新状态绘制后会引发另外一个问题,对于“股道”,其状态 发生变化,重新绘制后,原来在上面的“按钮”,变成了在“股道”的下面,即在“股道” 绘制后,也应该再绘制一下其上面的“按钮”元素。为了解决这个问题,引入了一个“元 素层次”,即每个元素都有一个层次,底层的按钮绘制后,也应该绘制在其上层的元素。 9 3. 站场图模块设计说明站场图模块设计说明 3.1. CZctView 站场图视图类站场图视图类 3.1.1. 概述概述 该类继承自 CScrollView,用来显示站场图,为了简化程序设计,有一个指向站场图站集 的指针,所有的站都按站集处理。在类中有一间隔为 0.

14、1 秒的定时器,在定时器中会递增 ticks 变量。程序中所有时间间隔都依此为基准。 在该类中实现的功能有: 1.鼠标移动停留时对鼠标所指元素的提示框提示功能。 2.对内存位图的自动处理。包括生成,窗口变大时的位图调整。 3.鼠标对站场图的拖动。 4.闪烁元素的自动绘制。 5.站场图的放大缩小。 如要使用站场图模块显示站场图,只要从该类派生出自己的类,增加自己所需的额外功 能即可。 3.1.2. 主要数据成员描述主要数据成员描述 private: / 鼠标移动时的嘀嗒值,用于计算鼠标没有移动的时间 intm_nMouseMoveTick; CPointm_mouseLocPos;/ 鼠标当前的

15、位置 CPoint m_mouseDownPos;/ 鼠标按下的位置 bool m_bRedrawMemBitmap;/ 是否重画内存图 CToolTipCtrl m_tips;/ 提示窗口 CBitmap m_bgdBitmap;/ 内存图 CDC* m_pMemDC;/ 向内存图绘制的DC指针 public: CStationSet *m_pStaSet;/ 显示的站集指针 protected: CSize m_bgdBitmapSize;/ 内存图大小 10 3.1.3. 主要函数描述主要函数描述 CDC *GetMemDC(); 说明:得到向内存图绘制的DC指针,绘制后不用释放,如对D

16、C有的改变,使用后 应恢复以前的设置。 参数:无 返回值:指向内存dc的指针。 void GetLocViewRect(RECT 说明:得到当前的逻辑显示区域。即加上了把滚动条的值。 参数:矩形结构引用 返回值:无 void SetElementsVisible(); 说明:设置元素的可见性,当滚动条滚动逻辑显示区域发生变化,或视图大小发生变 化 时,要重新设置站集中元素的可见性。在以上说说的情况下,系统会自动处理。 该函数外界一般不会使用。 参数:无 返回值:无 void GetLocPos(CPoint 说明:屏幕坐标和逻辑视图坐标的装换。即加上了把滚动条的值。 参数:屏幕坐标值 返回值:无 void ReDraw(); 说明:重新绘制内存图。 参数:无 返回值:无 void FreshViewRect(); 说明:重新计算元素的可见性,并重画视图。 参数:无 返回值:无 void Zoom(float scale); 说明:放大站场图 参数: scale: != 1.0 放缩比例,相对于上次。 = 1.0 还原站场图的原始大小。 返回值:无 11

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

当前位置:首页 > 中学教育 > 其它中学文档

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