绘制图例
图例绘制有两种: 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