现在,我需要根据其坐标绘制一些折线。这些是一条折线的坐标:
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);
但是,我在窗口中看到的是:
我认为是由坐标引起的。所有坐标都非常接近,因此在窗口中绘制时图形将变得太小。所以我的问题是如何正确缩放图形?换句话说,我怎么知道缩放比例?
答案 0 :(得分:0)
在QGraphicsView
上,您可以调用scale(qreal sx, qreal sy)
来缩放QGraphicsScene
及其所有QGraphicsItems
。如果您希望单独缩放每个项目而不是整个场景,请获取多边形中的每个点并使用Euclidian geometry scaling to scale your polygon。或者您可以使用QTransform
like this post did