Я пытался нарисовать точки скелета человека, используя 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);
В какой-то момент времени, когда я буду sh узнать положение точек, я использую:
QPolygonF polygon = m_item->path().toFillPolygon();
это возвращает мне 33 очка вместо 18.
Есть ли способ узнать текущие позиции тех 18 очков, с которых я начал, из path ()?
РЕДАКТИРОВАТЬ 1: После сравнения результатов toFillPolygon()
для открытого многоугольника (начальная и конечная точки разные) и закрытого многоугольника, я понял, что в открытом многоугольнике (как в моем случае) toFillPolygon()
не будет работать или возвращает неверные значения.