0
我實現了一個QwtPlot
,它可以在實時添加數據時在屏幕上滾動。根據用戶輸入,使用QwtPlotRenderer
偶爾會將圖形的圖像呈現爲文件。然而,因爲正常運行時軸滾動時,QwtScaleDiv
刻度線看起來就有點靠不住在渲染時(他們是右對齊):在渲染之前重新計算QwtScaleDiv
有一些簡單的方法,我可以重新計算除了第一個標籤在最左邊,最後一個在最右邊?
我實現了一個QwtPlot
,它可以在實時添加數據時在屏幕上滾動。根據用戶輸入,使用QwtPlotRenderer
偶爾會將圖形的圖像呈現爲文件。然而,因爲正常運行時軸滾動時,QwtScaleDiv
刻度線看起來就有點靠不住在渲染時(他們是右對齊):在渲染之前重新計算QwtScaleDiv
有一些簡單的方法,我可以重新計算除了第一個標籤在最左邊,最後一個在最右邊?
這並不像它首先看到的那麼困難。基本上,你需要做的就是暫時更換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();