Изменение размера повернутого объекта GraphicsItem из центра

https://forum.qt.io/topic/67664/solved-resizable-rotatable-graphicsitem

Привет, размер вышеуказанного сообщения изменяется с выбранным дескриптором и изменяется центр boundingRect. Мне нужно сделать то же самое с помощью keyPressEvent, и он изменит размер повернутого boundingRect равномерно от центра, т.е. он увеличит ширину на 1 единицу как с правой, так и с левой стороны, аналогично уменьшится на 1 единицу с обеих сторон и аналогичным образом увеличится / уменьшится высота. Проблема с keyPress в том, что мы не получим

QPointF ptMouseMoveInItemsCoord = mapFromScene(event->scenePos()); //in mouseMoveEvent

поэтому мы знаем, где установить края boundingRect, но у нас этого нет, когда мы увеличиваем / уменьшаем ширину / высоту с обеих сторон равномерно без изменения центра.

Как мы можем найти новые координаты сцены boundingRect, известные старые координаты сцены, угол, ширину и высоту boundingRect, центр должен оставаться таким же?

1 ответ

Вы хотите увеличить ограничивающий прямоугольник на 1 с каждой стороны в координатах элемента (= повернутая система координат)?

Если это так, это должно быть так же просто, как вычислить новую ограничивающую рамку в координатах элемента:

adjustedRect = boundingRect().adjusted(-1,-1, 1, 1);

а затем сопоставьте его с координатами сцены:

QPolygonF poly = mapToScene(adjustedRect);

Многоугольник будет содержать список точек с координатами ограничивающего прямоугольника относительно системы координат сцены.

Другие вопросы по тегам