Mit QGraphicsView eine lokale Karte anzuzeigen
-
09-10-2019 - |
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:
- Fügen Sie ein Kartenbild in der Szene und Qt sagen, wie die tatsächlichen Bildpixel zu Szene Koordinaten zuzuordnen.
- 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.
Lösung
- Legen Sie die Pixmap in eine QGraphicsPixmapItem und legen Sie sie in der Szene.
- 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.
- Aktualisieren der pixmap und Umfang des Elements nach Bedarf.
- Rufen Sie fitInView () Zoom auf die pixmap.
- Schwarz andere grafische Elemente in der Szene. Behandeln Sie die Einheiten der Szene koordinieren Meter.
- ...
- Profit! :)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow