Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: alexman от Август 24, 2012, 10:03



Название: Как в qwt сменить систему координат?
Отправлено: alexman от Август 24, 2012, 10:03
Нужно установить точку отсчета в верхний левый угол. Как это сделать?


Название: Re: Как в qwt сменить систему координат?
Отправлено: alexman от Август 25, 2012, 09:44
Все просто, но без телепатии не получается...
Код:
/*-----------------------InvertScaleTransformation-----------------------*/
class InvertScaleTransformation : public QwtScaleTransformation
{
public:
InvertScaleTransformation() : QwtScaleTransformation(QwtScaleTransformation::Other) {}
~InvertScaleTransformation() {}

double xForm(double s, double s1, double s2, double p1, double p2) const
{
return p1 + (p2 - p1) / (s2 - s1) * (s2 - s - s1);
}

double invXForm(double p, double p1, double p2, double s1, double s2) const
{
return s2 - s1 + (s2 - s1) / (p2 - p1) * (p - p1);
}

QwtScaleTransformation *copy() const
{
return new InvertScaleTransformation();
}
};

/*-----------------------InvertScaleEngine-----------------------*/
class InvertScaleEngine : public QwtLinearScaleEngine
{
public:
InvertScaleEngine() : QwtLinearScaleEngine() {}
~InvertScaleEngine() {}

QwtScaleTransformation* transformation() const
{
return new InvertScaleTransformation();
}
};
...
plot->setAxisScaleEngine(QwtPlot::yLeft, new InvertScaleEngine());