This commit is contained in:
2020-01-12 17:51:42 +08:00
parent ecc4726b9c
commit 6d325e296f
+83 -12
View File
@@ -4,6 +4,8 @@
#include "QThread"
#include "QDebug"
#include "QPicture"
#include "QtMath"
Cockpit::Cockpit(QWidget *parent): QWidget(parent)
{
@@ -141,6 +143,9 @@ void Cockpit::wheelEvent(QWheelEvent *e)
m_Target.yaw += 0.2f * e->angleDelta().y()/120.0f;
m_Attitude.distofly += 0.2f * e->angleDelta().y()/120.0f;
qDebug() << "wheel event" << m_Attitude.roll << m_Attitude.pitch << m_Attitude.yaw << m_Target.airspeed;
update();
@@ -256,7 +261,7 @@ void Cockpit::paintEvent(QPaintEvent *)
painter.setRenderHint(QPainter::TextAntialiasing);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
painter.translate(width() / 2, height() / 2); /* 坐标变换为窗体中心 */
painter.translate(width() / 2, 2* height() / 6); /* 坐标变换为窗体中心 */
int side = qMin(width(), height()); /* 这一句决定了这个模块只能是方形 */
painter.scale(side / 2000.0, side / 2000.0); /* 比例缩放 */
painter.setPen(Qt::NoPen);
@@ -1132,7 +1137,11 @@ void Cockpit::drawYawScale(QPainter *painter)
QPen ePen;
QFont font;
//平移坐标
painter->translate(0,1000);
font.setWeight(QFont::ExtraLight);
font.setFamily("Arial");//非衬线
painter->translate(0,1050);
painter->save();
//画一个半透明的基础圆
@@ -1142,10 +1151,8 @@ void Cockpit::drawYawScale(QPainter *painter)
painter->drawEllipse(-500,-500,1000,1000);
painter->restore();
painter->save();
//画一个顶部三角形
//painter->setOpacity(1.0f);
painter->save();
static const QPointF Tranpoints[3] = {
QPointF(-30,-560),
QPointF(0,-500),
@@ -1157,29 +1164,54 @@ void Cockpit::drawYawScale(QPainter *painter)
painter->setPen(ePen);
painter->setBrush(m_CurrentColor);
painter->drawPolygon(Tranpoints,3);
painter->restore();
//画顶部紫色目标值
painter->save();
//旋转
painter->rotate(m_Target.yaw - m_Attitude.yaw);
static const QPointF Tarpoint[3] = {
QPointF(-30,-560),
QPointF(0,-500),
QPointF(30,-560)
static const QPointF Tarpoint[8] = {
QPointF(-40,-500),
QPointF(-40,-530),
QPointF(-15,-530),
QPointF( -5,-500),
QPointF( 5,-500),
QPointF( 15,-530),
QPointF( 40,-530),
QPointF( 40,-500)
};
ePen.setWidth(8);
ePen.setWidth(5);
ePen.setColor(m_TargetColor);
painter->setPen(ePen);
painter->drawPolygon(Tarpoint,3);
painter->drawPolygon(Tarpoint,8);
painter->drawLine(0,-100,0,-500);
painter->restore();
//画一个中间小飞机
painter->save();
static const QPointF Planepoints[3] = {
QPointF(-30,50),
QPointF(0,-50),
QPointF( 30,50)
};
ePen.setWidth(8);
ePen.setColor(m_CurrentColor);
painter->setPen(ePen);
painter->setBrush(m_CurrentColor);
painter->drawPolygon(Planepoints,3);
painter->drawLine(0,-100,0,-500);
painter->restore();
//画一个顶部黑色显示框
painter->save();
@@ -1270,7 +1302,46 @@ void Cockpit::drawYawScale(QPainter *painter)
painter->restore();
}
//画中间小圆
painter->save();
//一直跟目标垂直
painter->rotate(m_Target.yaw);
ePen.setWidth(5);
ePen.setColor(QColor("#FFFFFF"));
painter->setPen(ePen);
for (int i = -5;i <= 5;i+=2) {
painter->save();
painter->translate(i*50,0);
painter->drawEllipse(-5,-5,10,10);
painter->restore();
}
//画侧偏距
painter->save();
//painter->translate(((m_Attitude.distofly >= 0)?(1):(-1))*log10(qAbs(m_Attitude.distofly)) * 10,0);
painter->translate(m_Attitude.distofly,0);
ePen.setWidth(5);
ePen.setColor(QColor("#FFFFFF"));
painter->setPen(ePen);
painter->drawLine(0,-100,0,100);
painter->restore();
painter->restore();
painter->restore();//画YAW结束
}