如何在QT中绘制一条直线?

时间:2013-05-21 05:20:58

标签: c++ qt

我有一个坐标和一个角度。现在我想从坐标中绘制一条直线到指定角度的一定长度。我怎么能实现这个?有人可以提出任何想法吗?

2 个答案:

答案 0 :(得分:8)

Arthur计算角度的方法是正确的,但实际上,QT提供了以特定角度绘制线条的内置方法,特别是QLineF标题中QLineF类的功能: / p>

#include <QLineF>

void AngleDemo::paintEvent(QPaintEvent *)
{
  QPainter painter(this);

  painter.setPen(QPen(Qt::black,1));

  /* Create the line object: */
  QLineF angleline;

  /* Set the origin: */
  angleline.setP1(QPointF(80,80));

  /* Set the angle and length: */
  angleline.setAngle(45);
  angleline.setLength(50);

  /* Draw the line: */
  painter.drawLine(angleline);
}

来自online documentation of the setAngle() function

  

将线条的角度设置为给定角度(以度为单位)。这将改变线的第二个点的位置,使得线具有给定的角度。

     

角度的正值表示逆时针,而负值表示顺时针方向。

     

零度位于3点位置。

     

此功能在Qt 4.4中引入。

答案 1 :(得分:3)

假设您的坐标由xy

组成
double endx = cos(angle)*length;
double endy = sin(angle)*length;

你的行将从(x,y)变为(x + endx,y + endy)。

不要忘记你的angle需要以弧度为单位,所以如果你有它的度数,例如0到360,那么就像这样转换它,并使用上面的弧度:

double pi = acos(-1);
double radians = angle / 180.0 * pi;