0

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的新scenecoords,已知的旧sceneCoords,boundingRect的角度,宽度和高度,中心应该保持不变?

4

1 回答 1

0

您的意思是在项目坐标 (=旋转坐标系)的每一侧将边界矩形增加 1 吗?

如果是这样,它应该像计算项目坐标中的新边界框一样简单:

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

然后将其映射回场景坐标:

QPolygonF poly = mapToScene(adjustedRect);

多边形将包含一个点列表,这些点具有相对于场景坐标系的边界矩形坐标。

于 2020-01-10T09:02:44.763 回答