Я пытаюсь нарисовать стрелку, поэтому я просто сослался на пример кода, где мы можем рисовать стрелки:
http://doc.qt.io/qt-5/qtwidgets-graphicsview-elasticnodes-edge-cpp.html
Я решил рисовать по той же формуле и попробовал так:
theCurrentLine->setP1(QPointF(0, 0) );
theCurrentLine->setP2((theLineVector));
p->drawLine(*theCurrentLine);
double angle = ::acos(theCurrentLine->dx() / theCurrentLine->length());
if (theCurrentLine->dy() >= 0)
angle = TwoPi - angle;
QPointF sourcePoint = QPointF(0,0);
QPointF sourceArrowP1 = sourcePoint + QPointF(sin(angle + Pi / 3) * theArrowSize,
cos(angle + Pi / 3) * theArrowSize);
QPointF sourceArrowP2 = sourcePoint + QPointF(sin(angle + Pi - Pi / 3) * theArrowSize,
cos(angle + Pi - Pi / 3) * theArrowSize);
p->drawPolygon(QPolygonF() << theCurrentLine->p1() << sourceArrowP1 << sourceArrowP2);
но теперь я хочу нарисовать линию после того, как будет нарисован многоугольник со стрелкой.
Как я могу изменить значение P1()
для theCurrentLine
, которое может начинаться после многоугольника, поскольку в настоящее время polygon(arrowHead)
и линия начинаются в одной и той же точке? Мне нужно начать линию после того, как нарисован наконечник стрелки. Причина в том, что иногда при увеличении ширины пера наконечник стрелки выглядит меньше, чем линия.