【发布时间】:2016-04-27 19:34:56
【问题描述】:
我在 Qt 中使用 c++,我想画一个椭圆。 从 Qt 文档中我发现我可以使用 drawEllipse 从边界矩形绘制一个椭圆:
void QPainter::drawEllipse(const QRectF &rectangle)
矩形由下式给出:
QRectF(qreal x, qreal y, qreal width, qreal height)
但是,这仅提供具有水平/垂直长轴和短轴的椭圆。
我的椭圆由两个坐标集给出,分别表示长轴和长轴和短轴的长度之比。因此,轴可以具有不水平或不垂直的斜率。 (无论如何我都需要使用这种方法,因为我也将它导出到具有此符号的 dxf 文件)
我的问题是:
除了使用边界矩形然后旋转它之外,还有其他方法可以绘制椭圆吗?
将它放在一个水平/垂直矩形中,然后在我从一开始就有轴坐标时计算旋转似乎有点傻。
【问题讨论】:
-
我快速搜索了文档,据我了解,QPainter 使用一些坐标系来绘制东西,您可以对其应用转换来绘制例如一个椭圆,其主轴不是水平/垂直的。看这里:doc.qt.io/qt-4.8/coordsys.html
-
顺便说一句,使用边界矩形并旋转它有什么问题?你只需要计算相应的数字
-
另外,使用 draw/rotate 方法,您可以绘制一个椭圆,然后通过旋转和缩放来创建其余的,这在 Qt 中比单独绘制它们占用的资源要少得多。
-
恕我直言,当已经可以通过旋转边界矩形来绘制任意椭圆时,Qt 提供另一种绘制椭圆的方法会很愚蠢