笔记
代码如下:
/*********************************************************************************************************
* 函数名称: SetWave1
* 函数功能: 设置波形 1 显示
* 输入参数: buf:缓冲区首地址
* size:缓冲区长度
* x0:横坐标起点
* x1:横坐标终点
* 输出参数: void
* 返 回 值: void
* 创建日期: 2023年08月12日
* 注 意:
*********************************************************************************************************/
void MainWindow::SetWave1(double* buf, unsigned int size, double x0, double x1)
{
static char s_iInitFlag = 1;
unsigned int i;
double max, min;
double xAxis, step;
//初始化
if(0 != s_iInitFlag)
{
s_iInitFlag = 0;
QBrush qBrush(QColor("white")); ui->mWave1->setBackground(qBrush); //设置背景颜色
ui->mWave1->legend->setVisible(false); //不显示图例
ui->mWave1->xAxis->setRange(0, 4096); //设置横坐标范围
ui->mWave1->yAxis->setRange(0, 4096); //设置纵坐标范围
ui->mWave1->addGraph(); //添加一条曲线
QPen pen; pen.setColor(QColor("red")); pen.setWidth(1); //画笔配置
ui->mWave1->graph(0)->setPen(pen); //设置画笔
ui->mWave1->replot(); //刷新显示
}
//清空坐标缓冲区
QVector<double>().swap(wave1XAxis);
QVector<double>().swap(wave1YAxis);
//填充坐标
xAxis = x0;
step = size;
step = (x1 - x0) / step;
for(i = 0; i < size; i++)
{
wave1XAxis.append(xAxis);
wave1YAxis.append(buf[i]);
xAxis = xAxis + step;
}
//查找最大最小值
max = buf[0];
min = buf[0];
for(i = 0; i < size; i++)
{
if(buf[i] > max)
{
max = buf[i];
}
if(buf[i] < min)
{
min = buf[i];
}
}
//设置横坐标范围
ui->mWave1->xAxis->setRange(x0, x1);
//设置纵坐标范围
if(max == min){max = max + 1;min = min - 1;}
ui->mWave1->yAxis->setRange(min, max);
//刷新显示
ui->mWave1->graph(0)->setData(wave1XAxis, wave1YAxis);
ui->mWave1->replot();
}