как правильно масштабировать графику? - PullRequest
0 голосов
/ 11 октября 2018

Теперь мне нужно нарисовать несколько полилиний в соответствии с их координатами.Это координаты одной линии опроса:

 1.15109497070313E+02 2.73440704345703E+01
 1.15115196228027E+02 2.73563938140869E+01
 1.15112876892090E+02 2.73697128295898E+01
 1.15108222961426E+02 2.73687496185303E+01
 1.15081001281738E+02 2.73908023834229E+01
 1.15078292846680E+02 2.73949108123779E+01
 1.15073806762695E+02 2.74090080261230E+01
 1.15063293457031E+02 2.74221019744873E+01
 1.15059646606445E+02 2.74324569702148E+01

Я нарисовал эти полилинии и переместил их в центр окна:

QPainter painter(this);
QPainterPath path;
for (auto& arc : layer.getArcs()) {
    for (int i = 0; i < arc.pts_draw.size() - 1; i++)
    {
        QPolygonF polygon = QPolygonF(arc.pts_draw);
        path.addPolygon(polygon);
    }
}

// move all polylines to the center of window
QPointF offset = rect().center() - path.boundingRect().center();
painter.translate(offset);

painter.drawPath(path);

Однако в окне я получил следующее::
enter image description here
Я думаю, что это вызвано координатами.Все координаты очень близки друг к другу, поэтому при рисовании в окне графика становится слишком маленькой.Так что моя проблема в том, как правильно масштабировать графику?Другими словами, как узнать коэффициент масштабирования?

1 Ответ

0 голосов
/ 18 октября 2018

На QGraphicsView вы можете позвонить scale(qreal sx, qreal sy), чтобы масштабировать QGraphicsScene и все это QGraphicsItems.Если вы хотите масштабировать каждый элемент отдельно, а не всю сцену, то возьмите каждую точку в многоугольнике и используйте Евклидово геометрическое масштабирование для масштабирования вашего многоугольника .Или вы могли бы использовать что-то под названием QTransform , как это сообщение

...