本文整理汇总了C++中QwtPlot::autoReplot方法的典型用法代码示例。如果您正苦于以下问题:C++ QwtPlot::autoReplot方法的具体用法?C++ QwtPlot::autoReplot怎么用?C++ QwtPlot::autoReplot使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QwtPlot
的用法示例。
在下文中一共展示了QwtPlot::autoReplot方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: rescale
void QwtPlotZoomer::rescale()
{
QwtPlot *plt = plot();
if ( !plt )
return;
const QRectF &rect = d_data->zoomStack[d_data->zoomRectIndex];
if ( rect != scaleRect() )
{
const bool doReplot = plt->autoReplot();
plt->setAutoReplot( false );
double x1 = rect.left();
double x2 = rect.right();
if ( !plt->axisScaleDiv( xAxis() ).isIncreasing() )
qSwap( x1, x2 );
plt->setAxisScale( xAxis(), x1, x2 );
double y1 = rect.top();
double y2 = rect.bottom();
if ( !plt->axisScaleDiv( yAxis() ).isIncreasing() )
qSwap( y1, y2 );
plt->setAxisScale( yAxis(), y1, y2 );
plt->setAutoReplot( doReplot );
plt->replot();
}
}
示例2: rescale
/*!
Zoom in/out the axes scales
\param factor A value < 1.0 zooms in, a value > 1.0 zooms out.
*/
void QwtPlotMagnifier::rescale(double factor)
{
factor = qwtAbs(factor);
if ( factor == 1.0 || factor == 0.0 )
return;
bool doReplot = false;
QwtPlot* plt = plot();
const bool autoReplot = plt->autoReplot();
plt->setAutoReplot(false);
for ( int axisId = 0; axisId < QwtPlot::axisCnt; axisId++ )
{
const QwtScaleDiv *scaleDiv = plt->axisScaleDiv(axisId);
if ( isAxisEnabled(axisId) && scaleDiv->isValid() )
{
const double center =
scaleDiv->lowerBound() + scaleDiv->range() / 2;
const double width_2 = scaleDiv->range() / 2 * factor;
plt->setAxisScale(axisId, center - width_2, center + width_2);
doReplot = true;
}
}
plt->setAutoReplot(autoReplot);
if ( doReplot )
plt->replot();
}
示例3: updateScales
/*!
Update the axes scales
\param intervals Scale intervals
*/
void QwtPlotRescaler::updateScales(
QwtInterval intervals[QwtPlot::axisCnt] ) const
{
if ( d_data->inReplot >= 5 )
{
return;
}
QwtPlot *plt = const_cast<QwtPlot *>( plot() );
const bool doReplot = plt->autoReplot();
plt->setAutoReplot( false );
for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
{
if ( axis == referenceAxis() || aspectRatio( axis ) > 0.0 )
{
double v1 = intervals[axis].minValue();
double v2 = intervals[axis].maxValue();
if ( plt->axisScaleDiv( axis )->lowerBound() >
plt->axisScaleDiv( axis )->upperBound() )
{
qSwap( v1, v2 );
}
if ( d_data->inReplot >= 1 )
{
d_data->axisData[axis].scaleDiv = *plt->axisScaleDiv( axis );
}
if ( d_data->inReplot >= 2 )
{
QList<double> ticks[QwtScaleDiv::NTickTypes];
for ( int i = 0; i < QwtScaleDiv::NTickTypes; i++ )
ticks[i] = d_data->axisData[axis].scaleDiv.ticks( i );
plt->setAxisScaleDiv( axis, QwtScaleDiv( v1, v2, ticks ) );
}
else
{
plt->setAxisScale( axis, v1, v2 );
}
}
}
const bool immediatePaint =
plt->canvas()->testPaintAttribute( QwtPlotCanvas::ImmediatePaint );
plt->canvas()->setPaintAttribute( QwtPlotCanvas::ImmediatePaint, false );
plt->setAutoReplot( doReplot );
d_data->inReplot++;
plt->replot();
d_data->inReplot--;
plt->canvas()->setPaintAttribute(
QwtPlotCanvas::ImmediatePaint, immediatePaint );
}
示例4: updateScales
/*!
Update the axes scales
\param intervals Scale intervals
*/
void QwtPlotRescaler::updateScales(
QwtDoubleInterval intervals[QwtPlot::axisCnt]) const
{
if ( d_data->inReplot >= 5 )
{
return;
}
QwtPlot *plt = (QwtPlot *)plot();
const bool doReplot = plt->autoReplot();
plt->setAutoReplot(false);
for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
{
if ( axis == referenceAxis() || aspectRatio(axis) > 0.0 )
{
double v1 = intervals[axis].minValue();
double v2 = intervals[axis].maxValue();
if ( plt->axisScaleDiv(axis)->lowerBound() >
plt->axisScaleDiv(axis)->upperBound() )
{
qSwap(v1, v2);
}
if ( d_data->inReplot >= 1 )
{
d_data->axisData[axis].scaleDiv = *plt->axisScaleDiv(axis);
}
if ( d_data->inReplot >= 2 )
{
QwtValueList ticks[QwtScaleDiv::NTickTypes];
for ( int i = 0; i < QwtScaleDiv::NTickTypes; i++ )
ticks[i] = d_data->axisData[axis].scaleDiv.ticks(i);
plt->setAxisScaleDiv(axis, QwtScaleDiv(v1, v2, ticks));
}
else
{
plt->setAxisScale(axis, v1, v2);
}
}
}
plt->setAutoReplot(doReplot);
d_data->inReplot++;
plt->replot();
d_data->inReplot--;
}
示例5: moveCanvas
/*!
Adjust the enabled axes according to dx/dy
\param dx Pixel offset in x direction
\param dy Pixel offset in y direction
\sa QwtPanner::panned()
*/
void QwtPlotPanner::moveCanvas( int dx, int dy )
{
if ( dx == 0 && dy == 0 )
return;
QwtPlot *plot = this->plot();
if ( plot == NULL )
return;
const bool doAutoReplot = plot->autoReplot();
plot->setAutoReplot( false );
for ( int axisPos = 0; axisPos < QwtAxis::PosCount; axisPos++ )
{
const int axesCount = plot->axesCount( axisPos );
for ( int i = 0; i < axesCount; i++ )
{
const QwtAxisId axisId( axisPos, i );
if ( !isAxisEnabled( axisId ) )
continue;
const QwtScaleMap map = plot->canvasMap( axisId );
const double p1 = map.transform( plot->axisScaleDiv( axisId ).lowerBound() );
const double p2 = map.transform( plot->axisScaleDiv( axisId ).upperBound() );
double d1, d2;
if ( QwtAxis::isXAxis( axisPos ) )
{
d1 = map.invTransform( p1 - dx );
d2 = map.invTransform( p2 - dx );
}
else
{
d1 = map.invTransform( p1 - dy );
d2 = map.invTransform( p2 - dy );
}
plot->setAxisScale( axisId, d1, d2 );
}
}
plot->setAutoReplot( doAutoReplot );
plot->replot();
}
示例6: drawContents
/*!
Redraw the canvas, and focus rect
\param painter Painter
*/
void QwtPlotCanvas::drawContents( QPainter *painter )
{
if ( d_data->paintAttributes & PaintCached && d_data->cache
&& d_data->cache->size() == contentsRect().size() )
{
painter->drawPixmap( contentsRect().topLeft(), *d_data->cache );
}
else
{
QwtPlot *plot = ( ( QwtPlot * )parent() );
const bool doAutoReplot = plot->autoReplot();
plot->setAutoReplot( false );
drawCanvas( painter );
plot->setAutoReplot( doAutoReplot );
}
if ( hasFocus() && focusIndicator() == CanvasFocusIndicator )
drawFocusIndicator( painter );
}
示例7: moveCanvas
/*!
Adjust the enabled axes according to dx/dy
\param dx Pixel offset in x direction
\param dy Pixel offset in y direction
\sa QwtPanner::panned()
*/
void QwtPlotPanner::moveCanvas(int dx, int dy)
{
if ( dx == 0 && dy == 0 )
return;
QwtPlot *plot = QwtPlotPanner::plot();
if ( plot == NULL )
return;
const bool doAutoReplot = plot->autoReplot();
plot->setAutoReplot(false);
for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
{
if ( !d_data->isAxisEnabled[axis] )
continue;
const QwtScaleMap map = plot->canvasMap(axis);
const int i1 = map.transform(plot->axisScaleDiv(axis)->lowerBound());
const int i2 = map.transform(plot->axisScaleDiv(axis)->upperBound());
double d1, d2;
if ( axis == QwtPlot::xBottom || axis == QwtPlot::xTop )
{
d1 = map.invTransform(i1 - dx);
d2 = map.invTransform(i2 - dx);
}
else
{
d1 = map.invTransform(i1 - dy);
d2 = map.invTransform(i2 - dy);
}
plot->setAxisScale(axis, d1, d2);
}
plot->setAutoReplot(doAutoReplot);
plot->replot();
}
示例8: rescale
//! Adjust the plot axes scales
void QwtPlotRescaler::rescale() const
{
#if 0
const int axis = referenceAxis();
if ( axis < 0 || axis >= QwtPlot::axisCnt )
return;
const QwtDoubleInterval hint = intervalHint(axis);
if ( !hint.isNull() )
{
QwtPlot *plt = (QwtPlot *)plot();
const bool doReplot = plt->autoReplot();
plt->setAutoReplot(false);
plt->setAxisScale(axis, hint.minValue(), hint.maxValue());
plt->setAutoReplot(doReplot);
plt->updateAxes();
}
#endif
const QSize size = canvas()->contentsRect().size();
rescale(size, size);
}
示例9: rescale
void PlotMagnifier::rescale( double factor, AxisMode axis )
{
factor = qAbs( 1.0/factor );
QwtPlot* plt = plot();
if ( plt == nullptr || factor == 1.0 ){
return;
}
bool doReplot = false;
const bool autoReplot = plt->autoReplot();
plt->setAutoReplot( false );
const int axis_list[2] = {QwtPlot::xBottom, QwtPlot::yLeft};
QRectF new_rect;
for ( int i = 0; i <2; i++ )
{
double temp_factor = factor;
if( i==1 && axis == X_AXIS)
{
temp_factor = 1.0;
}
if( i==0 && axis == Y_AXIS)
{
temp_factor = 1.0;
}
int axisId = axis_list[i];
if ( isAxisEnabled( axisId ) )
{
const QwtScaleMap scaleMap = plt->canvasMap( axisId );
double v1 = scaleMap.s1();
double v2 = scaleMap.s2();
double center = _mouse_position.x();
if( axisId == QwtPlot::yLeft){
center = _mouse_position.y();
}
if ( scaleMap.transformation() )
{
// the coordinate system of the paint device is always linear
v1 = scaleMap.transform( v1 ); // scaleMap.p1()
v2 = scaleMap.transform( v2 ); // scaleMap.p2()
}
const double width = ( v2 - v1 );
const double ratio = (v2-center)/ (width);
v1 = center - width*temp_factor*(1-ratio);
v2 = center + width*temp_factor*(ratio);
if( v1 > v2 ) std::swap( v1, v2 );
if ( scaleMap.transformation() )
{
v1 = scaleMap.invTransform( v1 );
v2 = scaleMap.invTransform( v2 );
}
if( v1 < _lower_bounds[axisId]) v1 = _lower_bounds[axisId];
if( v2 > _upper_bounds[axisId]) v2 = _upper_bounds[axisId];
plt->setAxisScale( axisId, v1, v2 );
if( axisId == QwtPlot::xBottom)
{
new_rect.setLeft( v1 );
new_rect.setRight( v2 );
}
else{
new_rect.setBottom( v1 );
new_rect.setTop( v2 );
}
doReplot = true;
}
}
plt->setAutoReplot( autoReplot );
if ( doReplot ){
emit rescaled( new_rect );
}
}