【问题标题】:Using QGraphicsView to display a local map使用 QGraphicsView 显示本地地图
【发布时间】:2019-08-30 06:27:26
【问题描述】:

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

我必须达到以下目标:

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

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

编辑 - 一些澄清:

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

【问题讨论】:

    标签: qt map coordinates qgraphicsview qpixmap


    【解决方案1】:
    1. 将像素图放入 QGraphicsPixmapItem 并将其放置在场景中。
    2. 调用setScale() 映射QGraphicsPixmapItem,使1 米映射到场景坐标中的1 个单位。 IE。 setScale(0.1) 如果像素图中的 10 个像素等于 1 米。
    3. 根据需要更新项目的像素图和比例。
    4. 调用fitInView() 放大像素图。
    5. 在场景中放置其他图形项目。将场景坐标的单位视为米。
    6. ...
    7. 利润! :)

    【讨论】:

    • 谢谢!它有效,但我不确定 fitInView() 部分 - 图像被拉伸并且看起来失真。
    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多