2015-09-25 201 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();