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

时间:2016-04-27 19:34:57

标签: c++ qt ellipse

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

void QPainter::drawEllipse(const QRectF &rectangle)

,矩形由下式给出:

QRectF(qreal x, qreal y, qreal width, qreal height)

但是,这只提供了一个水平/垂直长轴和短轴的椭圆。

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

我的问题是:

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

不需要计算旋转角度。由于您获得了主轴,因此您可以轻松地对其进行归一化并导出正交矢量。这些向量形成一个标准正交基础,它们的组成部分是你在画家设置的directional cosines中的transformation matrix

由于长轴方向已经表示为矢量,因此您无需计算任何超越函数来获得画家的变换矩阵。即使您必须反转矩阵(并且您没有),也很少需要添加和乘法。