QT用QGraphics在一条线上画一个椭圆或三角形

Posted

技术标签:

【中文标题】QT用QGraphics在一条线上画一个椭圆或三角形【英文标题】:QT drawing an ellipse or Triangle on a line with QGraphics 【发布时间】:2015-05-10 15:36:39 【问题描述】:

我画了多条线

line = scene->addLine(x1, y1, x2, x2, Pen);

现在我想在线条的中间添加一个标签(例如椭圆或三角形。椭圆可能是简单的解决方案)

我的想法是为 Y (newY) 计算一个新点并从 x2 中减去一个长度。

ellipse = scene->addEllipse(x2 - lengthX, newY, w, h, Pen, Brush);

计算新Y:

m = (x2 - x1) / (y2 -y1)

newY = m * x2 - 长度 + x2 -(m * y2)

但他画错了椭圆。

如何添加标签?我走对了吗?

【问题讨论】:

【参考方案1】:

您可以使用QLineF 类来帮助您,因为它有一些很好的便捷方法。

首先,您可以使用QLineF::pointAt(param) 方法轻松地沿线获得所需的点来绘制您的附加标签/形状。

此外,如果您想让标签/形状沿切线定向,您可以使用QLineF::angle()

【讨论】:

你能给我举个例子吗,如何使用 QLineF::pointAt?我怎么能说他应该给我指点呢? 例如,QPointF midPoint = line.pointAt(0.5); 将为您提供行的中点。 (假设 line 是 QLineF,如果不是,您可能需要从 QLine 转换它) 能否以像素为单位定位点?例如:pointAt(1) [100% = 端点] - 20pixel?

以上是关于QT用QGraphics在一条线上画一个椭圆或三角形的主要内容,如果未能解决你的问题,请参考以下文章

Educational Codeforces Round 41

python 世界杯在一条线上。

markdown 在一条线上轻松安装最新的稳定chefdk

Educational Codeforces Round 41(已补D,E)

在 UIViewController 上画一条线

[几何]三角形的内点