QGraphicsScene,如何根据中心点放置项目
Posted
技术标签:
【中文标题】QGraphicsScene,如何根据中心点放置项目【英文标题】:QGraphicsScene, how to place items based on center point 【发布时间】:2016-11-10 15:37:47 【问题描述】:我有一个 QGraphicsScene,并且我已经确定了我的中心点在哪里,但是我现在需要根据该信息弄清楚如何将我的项目放置在场景中。
我需要处理 2 条数据:范围和方位。
范围显然是距离中心点(或我的位置)的距离,方位是中心点的方向,0 表示北,180 表示南等等。
例如,如果我需要将一个项目放置在范围:20,方位:90,该项目将直接位于中心点右侧 20(单位)。目前,放置带有此数据的项目是基于场景左上角的 0,0。
这一切都需要能够随着 QGraphicsScene 的缩放状态进行缩放。
我完全迷失在这种转换中。
【问题讨论】:
【参考方案1】:不确定如何通过从坐标系转换到坐标系来获得适当的偏移量,我设法找到了解决方案。希望它不会被认为是一项过多的黑客工作。
首先我需要从左上角 (0,0) 偏移,并且知道我的场景是 360、360,这很容易。
我不是数学专家,我不确定如何获得角度,但经过一些研究后,我发现我所掌握的信息正是我导出向量所需的信息。
这是我为帮助我在 QGraphicsScene 中生成项目而编写的方法。
QPointF Mainwindow::pointLocation(double bearing, double range)
int offset = 90; //used to offset Cartesian system
double centerX = 180;//push my center location out to halfway point
double centerY = 180;
double newX = centerX + qCos(qDegreesToRadians(bearing - offset)) * range;
double newY = centerY + qSin(qDegreesToRadians(bearing - offset)) * range;
QPointF newPoint = QPointF(newX, newY);
return newPoint;
【讨论】:
以上是关于QGraphicsScene,如何根据中心点放置项目的主要内容,如果未能解决你的问题,请参考以下文章
从 QGraphicsScene 上的 QGraphicsLinearLayout 中删除 QGraphics 项