Frage

Ich versuche QGraphicsView zu verwenden, um ein Kartenbild angezeigt werden und einige Elemente auf ihn zeichnen. Die Kartengrenzen sind in einem kartesischen Koordinatensystem, beispielsweise NE (-500.200) bis SW (600, -350). Ich weiß, wie Bildpixel zur Karte <->. Mein Koordinatensystem

Ich würde folgendes erreichen haben:

  1. Fügen Sie ein Kartenbild in der Szene und Qt sagen, wie die tatsächlichen Bildpixel zu Szene Koordinaten zuzuordnen.
  2. Fügen Sie grafische Elemente in ihrer realen Position, z.B. (-100.200)

Doing (2) ist einfach - einfach den Artikel der Szene. Wie erreiche ich (1)? Was soll ich tun, nachdem ich rufe Szene-> addPixmap ()?

Bearbeiten - Einige Erläuterungen:

  • Ich Abbilden Innenbereich von einigen hundert Metern
  • Die Karte wird auf zwei Arten in Echtzeit ändern:
    • Die Karte größer wird alle paar Sekunden
    • Die grafischen Elemente verschieben, ändern Sie Farben, etc.
War es hilfreich?

Lösung

  1. Legen Sie die Pixmap in eine QGraphicsPixmapItem und legen Sie sie in der Szene.
  2. Rufen Sie setScale () die QGraphicsPixmapItem so abzubilden 1 Meter Karten bis 1 Einheit in der Szene zu koordinieren. dh. setScale (0,1), wenn 10 Pixel in dem Pixelbild gleich 1 Meter.
  3. Aktualisieren der pixmap und Umfang des Elements nach Bedarf.
  4. Rufen Sie fitInView () Zoom auf die pixmap.
  5. Schwarz andere grafische Elemente in der Szene. Behandeln Sie die Einheiten der Szene koordinieren Meter.
  6. ...
  7. Profit! :)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top