2013-10-05 146 views
0

请考虑下图:如何用Qt绘制弧线?

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

问题是绘制一个起弧在底部线的端部和接触上述倾斜线(下面示出的方式)

/
    /
/
    /. 
/. 
/___. 

只见这些弧绘制的Qt的功能:
http://qt-project.org/doc/qt-5.1/qtgui/qpainter.html#drawArc

这些功能需要一个矩形作为参数,因为我没有任何。

我应该如何使用这些函数来绘制如上所示的弧?

+0

您需要先计算边界矩阵。 –

回答

1
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的行之间的角度。

+0

对,这是比我更优雅(即详细)的答案,谢谢。 :) – lpapp