0

我正在尝试使用 QGraphicsView 来显示地图图像并在其上绘制一些项目。地图边界位于笛卡尔坐标系中,例如 NE(-500,200) 到 SW(600,-350)。我知道如何映射图像像素 <--> 我的坐标系。

我必须实现以下目标:

  1. 将地图图像添加到场景并告诉 Qt 如何将实际图像像素映射到场景坐标。
  2. 在实际位置添加图形项,例如 (-100,200)

执行 (2) 很简单 - 只需将项目添加到场景中。我如何实现(1)?调用scene->addPixmap() 后我应该怎么做?

编辑- 一些澄清:

  • 我正在绘制一个几百米的室内区域
  • 地图将以两种方式实时更改:
    • 地图每隔几秒就会变大
    • 图形项目移动、改变颜色等。
4

1 回答 1

2
  1. 将像素图放入 QGraphicsPixmapItem 并将其放置在场景中。
  2. 调用setScale()来映射 QGraphicsPixmapItem,因此 1 米映射到场景坐标中的 1 个单位。IE。setScale(0.1) 如果像素图中的 10 个像素等于 1 米。
  3. 根据需要更新项目的像素图和比例。
  4. 调用fitInView()以缩放到像素图。
  5. 在场景中放置其他图形项目。将场景坐标的单位视为米。
  6. ...
  7. 利润!:)
于 2010-12-06T20:19:07.530 回答