У меня есть полигон:Qt 5.5, как повернуть полигон вокруг позиции
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 является целым числом и определяет длину иглы.
Я хочу повернуть многоугольник вокруг второго указателя многоугольника, но как?
(Edit) ... На пытающегося Ответ предложил Антон Савин, перед тем и трансформации:
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)
Не уверен, что случилось, но игла полностью исчезла, на обследование с отладчиком я могу видеть, X координаты массово отрицательный ... Я буду редактировать оригинальный пост, чтобы включить результаты. – SPlatten