一、前言
雷达模拟仿真工具,整体结构采用的QGraphicsView框架,核心部分就是刻度盘内模拟点的功能,当我们模拟点超出刻度盘外如何去控制显隐。刻度盘是圆形的,或者是其它不规则形状,我又该如何去控制显示呢,其实方法很简单,在QGraphicsScene场景中,QGraphicsItem提供了一个这样的一个接口出来,[virtual] QPainterPath QGraphicsItem::shape() const,当我们指定了对应形状,我们指定的QGraphicsItem的形状大小会更加的精确,在一些碰撞检测也会更加精确,并且超出的点也不在进行刷新绘制,默认情况返回的都是一个矩形。
在下面展示中,巧妙的运用视觉差异,在上节中绘制的雷达刻度盘中增加了一个可以说是不可见的圆形形状QGraphicsItem节点,来达到这样一个碰撞显隐效果。
二、雷达模拟仿真工具介绍
雷达模拟仿真工具,主要通过模拟点模拟相关物体,方位、航向角、距离、速度,并且显示相关详情信息可建立跟踪线建立与模拟点联系。可自定义更换模拟点背景达到更加逼真效果,如歼击机,航母发射导弹效果,指挥所被打击爆炸效果。在距离上可自由控制距离缩放,也可建立危险等级制度的区域范围显示,也可激光雷达航向距离控制发射。这过程中会运用到很多数学计算,也有对模拟点组合效果。
三、功能特点
- 设计点由背景,功能按钮,雷达区域,频谱区域,缩放模块,信息点采集模块组成;
- 背景采用分层绘制达到绘制性能的最优化;
- 功能按钮增设了相关雷达功能点;
- 雷达区域为核心模块,包含模拟点各种功能效果,危险等级区域绘制,激光雷达等功能;
- 频谱区域主要显示音频频谱效果;
- 缩放模块控制雷达区域缩放效果;
- 信息采集区域采集雷达区域相关数据信息点数据展示;
- 可支持换肤;
- 可支持音频频谱显示;
- 可支持任意随机添加模拟点;
- 可支持自定义背景添加模拟点;
- 可支持方位,航向角,距离,速度,目标体真实图自定制;
- 可支持危险区域并且可等级划分,方位,角度,距离,危险提示信息等显示;
- 可支持激光发射模拟;
- 支持雷达图放大缩小显示;
- 可支持模拟点编辑设置;
- 可支持模拟点跟踪线设置;
- 可支持模拟点详细数据查看;
- 可支持增加添加目标体预览功能;
- 可支持增加航母目标体;
- 可支持增加歼击机目标体;
- 可支持增加指挥所目标体;
- 可支持增加航母炮弹攻击指挥使效果;
- 可支持增加航母导弹攻击指挥使效果;
- 可支持增加歼击机炮弹攻击指挥使效果;
- 可支持增加歼击机导弹攻击指挥使效果;
- 可支持增加指挥使被炸前,中, 后三种状态效果;
四、核心代码
自定义GraphicsButtonItem类继承自QGraphicsObject,收到按钮点击mousePressEvent事件后发射了clicked()信号,在外侧需要的地方绑定此信号,做相应槽函数响应即可。
QRectF GraphicsRoundItem::boundingRect() const
{
return m_rect;
}
QPainterPath GraphicsRoundItem::shape() const
{
QPainterPath path;
path.addEllipse(boundingRect());
return path;
}
五、效果图
-
这里使用的默认矩形形状区域
-
这里使用的圆形形状区域,当然自己可以根据自己需要定制不同的不规则区域也可。