绘制图例
图例绘制有两种: 1. 设置多个颜色绘制 2.随机100个值(自己可设置)绘制
class CPointLegend : public CLegend
{
public:static CPointLegend& getInstance() {/*c++11支持,线程安全的单例模式*/static CPointLegend instance;return instance;}
public:CPointLegend();virtual ~CPointLegend();
};class CLineLegend : public CLegend
{
public:static CLineLegend& getInstance() {//c++11支持,线程安全的单例模式static CLineLegend instance;return instance;}
public:CLineLegend();virtual ~CLineLegend();
};class WavePointLegend : public QWidget
{Q_OBJECT
public:explicit WavePointLegend(QWidget *parent = nullptr);
public:virtual void paintEvent(QPaintEvent *event);
private:CPointLegend* pl;
signals:
};class WaveLineLegend : public QWidget
{Q_OBJECT
public:explicit WaveLineLegend(QWidget *parent = nullptr);
public:virtual void paintEvent(QPaintEvent *event);
private:CLineLegend* ll;
signals:
};CPointLegend::CPointLegend()
{
}CPointLegend::~CPointLegend()
{//qDebug() << "CPointLegend" ;
}
WavePointLegend::WavePointLegend(QWidget *parent): QWidget{parent}
{pl = &CPointLegend::getInstance();pl->randomColor(100);
}void WavePointLegend::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);pl->paintColorCard(this);
}WaveLineLegend::WaveLineLegend(QWidget *parent): QWidget{parent}
{ll = &CLineLegend::getInstance();ll->setColor(QColor(255, 0, 0));ll->setColor(QColor(0, 255, 0));ll->setColor(QColor(0, 0, 255));ll->setColor(QColor(255, 0, 255));
}void WaveLineLegend::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);ll->paintColorCard(this);
}CLineLegend::CLineLegend()
{
}CLineLegend::~CLineLegend()
{}
坐标系绘制
y轴的坐标刻度可以随着读入数据的值,自动调节
paintGL函数:
//清除屏幕和深度缓存
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//重置当前的模型观察矩阵 在实际绘制之前,需要调用glLoadIdentity()来清除当前的矩阵
glLoadIdentity();
//平移
glTranslatef(0, 0, m_scloe);
//绕原点X轴旋转, 通过修改m_rot1坐标系上下偏转角度
glRotatef(abs(m_rot1.z), m_rot1.x, 0, 0);
//绕原点Y轴旋转, 通过修改m_rot2坐标系左右偏转角度
glRotatef(abs(m_rot2.z), 0, m_rot2.y, 0);
//初始化角度
glRotatef(5, 0, 0, 1);
glRotatef(25, 1, 1, 0);
//prePorcessData();
//动态更新y轴坐标
if (updateObj()) {
m_yText->createTextures();
resetUpdate();
}
glPushMatrix();
{
glTranslatef(m_translate.x, m_translate.y, m_translate.z);
paintPointData();
paintLineData();
paintPlan();
paintBorder();
paintGrid();
paintAxisText();
}
glPopMatrix();
glFlush();
工程: opengl: QT 和 opengl - Gitee.com