2015-09-25 2 views
0

Я реализовал QwtPlot, который прокручивает экран по мере добавления данных в реальном времени. На основе пользовательского ввода изображение графика иногда отображается в файл с использованием QwtPlotRenderer. Однако, поскольку ось прокручивается во время нормальной работы QwtScaleDiv тик знаки могут выглядеть немного шаткий время рендеринга (они выравниваются по правому краю):пересчитать QwtScaleDiv перед рендерингом

enter image description here

Есть несколько простых способов, в которых я могу пересчитать разделение до рендеринга, чтобы первая метка находилась на крайнем левом углу, а последняя была справа?

ответ

0

Это не так сложно, как прежде. Баснически все, что вам нужно сделать, это временно заменить axisScaleDiv.

auto divX = this->axisScaleDiv(xBottom); 

double ub = divX.upperBound(); 
double lb = divX.lowerBound(); 
double numTicks = 11.0; // 10 even divisions 

// you can create minor/medium ticks if you want to, I didn't. 
QList<double> majorTicks; 
for (int i = 0; i < numTicks; ++i) 
{ 
    majorTicks.push_back(lb + i * ((ub - lb)/(numTicks - 1))); 
} 

// set the scale to the newly created division 
QwtScaleDiv renderDivX(divX.lowerBound(), divX.upperBound(), 
    QList<double>(), QList<double>(), majorTicks); 
this->setAxisScaleDiv(xBottom, renderDivX); 

// DO PLOT RENDERING 
QwtPlotRender renderer; 
renderer.renderDocument(...); 

// RESOTRE PREVIOUS STATE 
this->setAxisScaleDiv(xBottom, divX); 
this->setAxisScaleDiv(yLeft, divY); 

// update the axes 
this->updateAxes(); 

 Смежные вопросы

  • Нет связанных вопросов^_^