У меня есть полигон:
QPolygon plyNeedle;
plyNeedle << QPoint(ptOrigin.x() - intNeedleHalfWidth, ptOrigin.y())
<< QPoint(ptOrigin.x(), ptOrigin.y() + intNeedleHalfWidth)
<< QPoint(ptOrigin.x() + intRadius - intNeedleHalfWidth, ptOrigin.y())
<< QPoint(ptOrigin.x(), ptOrigin.y() - intNeedleHalfWidth);
ptOrigin имеет тип QPoint и определяет точку поворота. intNeedleHalfWidth является целым числом и имеет значение 4. intRadius является целым числом и определяет длину иглы.
Я хочу повернуть полигон вокруг второго индекса полигона, но как?
(Редактировать)... При попытке Ответ, предложенный Антоном Савиным, до и преобразование:
ptOrigin (40, 250)
plyNeedle (36,250),(40,254),(287,250),(40,246)
После выполнения:
plyNeedle = QTransform().translate(-ptOrigin.x(), -ptOrigin.y())
.rotate(45)
.translate(ptOrigin.x(), ptOrigin.y())
.map(plyNeedle);
Затем plyNeedle добавляется в QPainter:
QBrush brshArrow;
brshArrow.setColor(mcpszARGBneedle);
brshArrow.setStyle(Qt::SolidPattern);
objOffscrPainter.setPen(mcpszARGBneedle);
QPainterPath path;
path.addPolygon(plyNeedle);
objOffscrPainter.drawPolygon(plyNeedle);
objOffscrPainter.fillPath(path, brshArrow);
Ничего не отображается, при исследовании plyNeedle содержит:
plyNeedle (-340,157),(-340,163),(-162,335),(-334,157)