0

マップ画像を表示し、その上にいくつかのアイテムを描画するために QGraphicsView を使用しようとしています。マップの境界はデカルト座標系です。たとえば、NE(-500,200) から SW(600,-350) までです。画像ピクセル <--> 座標系をマッピングする方法を知っています。

次のことを達成する必要があります。

  1. シーンにマップ イメージを追加し、実際のイメージ ピクセルをシーン座標にマップする方法を Qt に指示します。
  2. グラフィックアイテムを実際の位置に追加します。例: (-100,200)

(2) の実行は簡単です。アイテムをシーンに追加するだけです。(1) を達成するにはどうすればよいですか? Scene->addPixmap() を呼び出した後はどうすればよいですか?

編集- いくつかの説明:

  • 数百メートルの屋内エリアをマッピングしています
  • マップは、次の 2 つの方法でリアルタイムに変化します。
    • マップは数秒ごとに大きくなります
    • グラフィックアイテムが移動したり、色が変わったりします。
4

1 に答える 1

2
  1. ピックスマップを QGraphicsPixmapItem に入れ、シーンに配置します。
  2. setScale()を呼び出して QGraphicsPixmapItem をマップし、1 メートルがシーン座標の 1 単位にマップされるようにします。すなわち。ピックスマップの 10 ピクセルが 1 メートルに等しい場合は、setScale(0.1)。
  3. 必要に応じてアイテムのピックスマップとスケールを更新します。
  4. fitInView()を呼び出して、ピックスマップにズームします。
  5. 他のグラフィック アイテムをシーンに配置します。シーン座標の単位をメートルとして扱います。
  6. ...
  7. 利益!:)
于 2010-12-06T20:19:07.530 に答える