如何用Qt绘制弧线?

时间:2013-10-05 11:39:26

标签: qt qpainter qtgui qrect

考虑下图:

我有关于两条线的中心点,两者之间的角度以及两条线的长度的信息。

问题是从底线的末尾开始绘制弧线并触摸上面的斜线(下面显示的方式)

     /
    /
   /
  /.
 /  .
/___.

我看到了Qt的这些弧绘功能:
http://qt-project.org/doc/qt-5.1/qtgui/qpainter.html#drawArc

这些函数需要一个矩形作为参数,而我没有。

如何使用这些函数绘制弧线,如上所示?

1 个答案:

答案 0 :(得分:2)

QPointF O; // intersection of lines
QPointF B; // end point of horizontal line
QPointF A; // end point of other line

float halfSide = B.x-O.x;
QRectF rectangle(O.x - halfSide,
                 O.y - halfSide,
                 O.x + halfSide,
                 O.y + halfSide);

int startAngle = 0;
int spanAngle = (atan2(A.y-O.y,A.x-O.x) * 180 / M_PI) * 16;

QPainter painter(this);
painter.drawArc(rectangle, startAngle, spanAngle);

你必须使用atan来计算边界矩形,而不是线之间的角度。