无线网络优化系统中回放模块的应用开发( 二 )


要进行图形化的显示 , 需要用到picture控件(不同于显示图像的image控件) , 把picture控件拖拽成一定大小用来作为回放显示的主窗口 , 回放的图形曲线就可以利用这个控件来实现 。在回放时需要显示的指标数据包括每个时间点对应信号的场强值、通话质量值和时间提前量(TA值)等 , 这些指标都是一些标量值 。这里不妨以场强值(rxlev)为例说明一下如何图形化表示场强值的大小 。场强的值是一些-110到-47的数 , 单位为dB , 总共分64个等级 。现在假定picture控件的scale属性被设置成了Picture1.Scale(0,0)-(600 , 200) , 这就代表picture控件覆盖区域被分成了横轴为600单位、纵轴为200单位的坐标区域 。可以在这个坐标区域内画图线来实现图形化 。在picture显示区域显示图形 , 用的是line方法 , line方法的编程语句是:
line(起始点横坐标 , 起始点纵坐标)-(终止点横坐标 , 终止点纵坐标) , 划线颜色
需要注重的是 , picture控件的原点是在控件的左上角 , 纵坐标轴向下为正 , 横坐标向右为正 。
当需要显示的是柱状图时 , 起始点和终止点的横坐标值相同 , 起始点纵坐标值应该是用户定义的坐标原点在控件坐标系中所在的坐标 , 如下面一句:

;Picture1.Line(Line_Show_position-flag_coefficient* 600 0.5, 112)-(Line_Show_position - flag_ coefficient * 6000.5, 112- 1.2 * drivetestrst.fields("Rxlev_S") ), vbGreen
句中的Line_Show_position等是用户编程时定义的变量 。
假如要实现折线图的显示 , 也是用line方法 , 只不过此时起始点和终止点的横纵坐标值都会不同 , line语句类似下面一句:
Picture1.Line(I-0.5, 112-1.2 * Rxlev_S )-(I0.5 , 112-1.2 * Rxlev_S ) , vbBlue
这时在显示区域就会出现一条短短的直线 , 当很多这样的直线首尾连接在一起时就形成了折线 。注重 , VB中有一个line控件也能实现画线功能 , 这个line控件不同于上述的line方法 , 后者本身就是一个拥有属性和方法的对象 , 而前者只是picture控件的一个方法 , 所以为了保证这些图形被遮盖后仍然能保持原样 , 必须在画线之前执行Picture1.AutoRedraw=True语句 。
当系统检查到数据中出现了掉话、壅塞等情况时 , 需要以图标的形式把这些信令的状态标示出来 。要形成这些效果 , 需要用到picturebox控件 , 这个控件是一个图片包容器 , 它有一个picture属性 , 把该属性的内容设置成需要显示的图片后 , 用left和top属性设置图片的位置 , 用visible属性来控制图片的显示或隐藏就可以方便地实现表示壅塞、掉话等信令的状态了 。
2.回放内容的回滚
对回放内容的回滚是指当网优人员在观测回放时 , 如发现异常 , 则会拖动滚动条以重新观测回放过的内容 。由于picture本身不支持滚动显示的功能 , 也就是picture控件本身并没有用于滚动显示的属性 , 因此 , 需要采取变通的办法来实现 。本文采用的是在picture控件中嵌入flatscrollbar控件的方法 。flatscrollbar是滚动条控件 , 专门用于拖动显示 。flatscrollbar通过max和value属性来实现滚动显示 , max属性用于设置一个最大值 , value属性就是用户点击滚动条所得到的位置 。比如 , 某文件有5000条记录 , 而在回放时每一屏幕只能看到600条记录的图形显示 , 因此 , 当用户需要察看任意位置记录显示的时候 , 就需要拖动滚动条 , 当用户拖动由faltscrollbar实现的滚动条到某个位置时(比如拖动到第3000条记录内容) , 此时 , faltscrollbar控件的max属性可以设置成5000 , 而拖动后的value值等于3000 , 可以应用flatscrollbar的这个属性来实现滚动显示控制 。可以把指向路测数据内容的数据集指针(游标)指向3000 , 在picture控件上显示相应部分数据的图形 。当然 , 如何再现图形还要涉及到一些细节却很重要的问题 , 比如如何让拖动更加平滑 , 如何保存回放过的状态等等 , 这些问题都需要采取一些灵活的办法去解决 , 这里就不具体介绍了 。

推荐阅读