我一直在尝试使用 18 个不同的关节来绘制人的骨骼点。所以,我决定使用QGraphicsPathItem
. 我可以成功生成如下所示的项目:(请原谅我的绘画技巧)
为了实现这一点,我使用了:
QPainterPath pp;
pp.moveTo(m_points[0]);
pp.lineTo(m_points[1]);
pp.lineTo(m_points[2]);
pp.lineTo(m_points[3]);
pp.lineTo(m_points[4]);
pp.moveTo(m_points[1]);
pp.lineTo(m_points[5]);
pp.lineTo(m_points[6]);
pp.lineTo(m_points[7]);
pp.moveTo(m_points[1]);
pp.lineTo(m_points[8]);
pp.lineTo(m_points[9]);
pp.lineTo(m_points[10]);
pp.moveTo(m_points[1]);
pp.lineTo(m_points[11]);
pp.lineTo(m_points[12]);
pp.lineTo(m_points[13]);
pp.moveTo(m_points[0]);
pp.lineTo(m_points[14]);
pp.lineTo(m_points[16]);
pp.moveTo(m_points[0]);
pp.lineTo(m_points[15]);
pp.lineTo(m_points[17]);
m_item->setPath(pp);
在某个时间点,当我想知道点的位置时,我使用:
QPolygonF polygon = m_item->path().toFillPolygon();
这给我 33 分而不是 18 分。
有没有办法从路径()获取我开始的那 18 个点的当前位置?
编辑1:比较toFillPolygon()
开放多边形(起点和终点不同)和封闭多边形的结果后,我意识到开放多边形(如我的情况)toFillPolygon()
将不起作用或返回错误值。