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