繁体   English   中英

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

[英]Can I draw an ellipse in Qt c++ without using a rectangle?

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

void QPainter::drawEllipse(const QRectF &rectangle)

矩形由下式给出:

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

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

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

我的问题是:

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

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

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

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

旋转角度的计算不是必需的。 由于您获得了主轴,因此您可以轻松地对其进行归一化并导出正交矢量。 这些向量形成一个标准正交基础,它们的成分是你将在画家上设置的变换矩阵中的方向余弦

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM