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 项

Java2D:如何将图像放置在具有正确旋转的中心周围

QGraphicsScene 中的位移

如何在 iOS 7 中向 UIToolbar 添加更大的按钮项?

如何将按钮垂直放置在框架的中心?

如何将UILabel放置在导航栏的中心