我可以在不使用矩形的情况下在Qt c ++中绘制椭圆吗?

Lit*_*eek 5 c++ qt ellipse

我在Qt中使用c ++,我想绘制一个椭圆.从Qt文档中我发现我可以使用drawEllipse从边界矩形中绘制一个椭圆:

void QPainter::drawEllipse(const QRectF &rectangle)
Run Code Online (Sandbox Code Playgroud)

矩形由下式给出:

QRectF(qreal x, qreal y, qreal width, qreal height)
Run Code Online (Sandbox Code Playgroud)

但是,这仅提供具有水平/垂直长轴和短轴的椭圆.

我的椭圆由两个坐标集给出,表示长轴和长轴和短轴的长度之比.因此,轴可以具有非水平或垂直的斜率.(无论如何我需要使用这个方法,因为我也将它导出到dxf文件,其中有这种表示法)

我的问题是:

有没有其他方法来绘制椭圆而不是使用边界矩形然后旋转它?

将它放在水平/垂直矩形中然后在从头开始有轴坐标时计算旋转似乎有点傻.

Rei*_*ica 1

除了使用边界矩形然后旋转它之外,还有其他方法可以绘制椭圆吗?

不,没有。当然,在绘制椭圆之前,您必须先旋转坐标系。

旋转角度的计算不是必需的。由于给定了长轴,您可以轻松地将其标准化并导出正交向量。这些向量形成正交基,它们的分量是您将在画家上设置的变换矩阵中的方向余弦。

由于长轴方向已经表示为向量,因此您不需要计算任何超越函数即可得出画家的变换矩阵。即使您必须反转矩阵(而您不需要),也只需很少的加法和乘法即可。