Изменение размера повернутого GraphicsItem из центра - PullRequest
0 голосов
/ 06 января 2020

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

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

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

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

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

1 Ответ

0 голосов
/ 10 января 2020

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

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

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

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

QPolygonF poly = mapToScene(adjustedRect);

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

...