dynamische Verschiebung von XY-Zeichen Grenzen in einer PictureBox

iMarcG5

Mitglied
Guten Tag erst mal an euch alle.
Wie gesagt geht es bei mir im Moment um eine PictureBox.
Grundsätzlich geht es darum die Daten(Längen + Breitengrad) die ich über GPS-empfange in einem XY-Plot darzustellen. Dass man z.B. die mit dem Auto gefahrene Strecke visualisieren kann.

die Daten bekomme ich schon, hab sie aus dem GPS-Stream ausgefiltert. Es geht also nur noch um die visualisierung.

Linien zeichnen in pictureBoxen ist auch nicht mein Problem (hier in diesem Fall ja zwischen zwei Punkten (zwischen empfangenenKoordinaten_n und empfangenenKoordinaten_n-1)(n = Zeitpunkt)) (!das ist jetzt kein Code:)!)
nun kommts aber...

1. müsste ich mir ja bei GDI (wenn ich z.B. ne stunde fahre) (120*60)-2 Punkte merken, da ich ja immer jeden alten Punkt wieder neu zeichnen muss (oder geht es doch anders) (ist antürlich auch ne Zeitsache... wenn ich ne for-Schleife brauche die x-tausendmal durchläuft *graus* :eek:)

2. müsste ich auch den Maßstab dynamisch anpassen können.
d.h. immer der am weitesten vom Startpunkt entfernte Punkt ist ganz außen in der PictureBox. Zudem müssen natürlich die anderen Punkte (entfernungen) angepasst werden.

kleines beispiel.

ich fahre 10 Meter nach rechts... somit bin ich ganz rechts angekommen (an der PictureBox) fahre ich nun weiter nach rechts, so wird die rechte WerteGrenze der PictureBox verschoben. die vorhergerfahrenen 10 meter die zu beginn 100Pixel waren sind nun natürlich bei 100 gefahrenen metern nur noch 10 Pixel...

... wenn ich genau so gut wüsste wie ich es programmieren kann, wie beschreiben, dann hätte ich es wohl schon fertig..

Meine Frage:
Geht das überhaupt mit GDI... kennt sich sonst jemand besser in DirectX aus (auf jeden Fall würd ich sagen ;)) und könnte sich denken wie es dann funktionieren kann...

habe schon bei Csharpcorner paar XY-Plots gesehen.... helfen mir allerdings auch nicht arg weiter!.. v.a. das Punkte-Speicher-Problem

Ich hoffe es hat jemand eine gute Idee...wäre sehr nett...
vielen Dank schonmal im voraus
 
Zuletzt bearbeitet:
kann denn niemand etwas dazu sagen?:(
oder hab ich mich undeutlich ausgedrückt?
wäre nett wenn jemand etwas sagen könnte
Danke.
 
Hi!
Also ich würde mir hier eher eine eigene Klasse schreiben, die weniger Punkte sondern eher in Richtung Vektor geht. Also so eine Art Winkel in ° und Weg in z.B. einer fixen Einheit m. Deine Darstellung (Bitmap) holt sich dann beim Zeichnen diese Vektoren und skaliert diese eigenständig auf die aktuelle ZoomSize. Hat den Vorteil, das rein/raus zoomen automatisch mitkommt. Und als 2tes den Vorteil das z.B. 10 Punkte in die gleiche Richtung nicht 10 Punkte sind sondern nur 1 Vektor mit der entsprechenden Länge.

Wäre z.B. mein Ansatz den ich wählen würde. Ich würde die Daten also auf einen definierten Stand/Einheit lassen. XY finde ich insofern nicht gut, da sich XY wie bei Dir der Fall jederzeit ändern könnten. D.h. ständig Koordinaten auf die Zoomsize umrechnen. Damit würdest Du ja immer die Punkte verändern müssen.

Vielleicht hilft Dir das etwas weiter :)
Ciao
LieberNet
 
Zuletzt bearbeitet:
Danke.. der Ansatz ist ja ganz nett...
aber ich verwende ja bereits 2D Vektorgrafiken von GDI+ indem ich die zwei Punkte angebe, die verbunden werden sollen

viele Punkte allerdings durch Kurven zu ersetzen habe ich noch nicht bedacht... hört sich aber nach ziemlichen rechenaufwand an...:suspekt:
am einfachsten wäre natürlich wenn einfach die alte zeichnung dran beleibt, und nur was neu dazu kommt gezeichenet werden muss... aber ob das geht, bzw. wie und vielleicht mit directX oder auch nicht ist im Moment für mich noch ein rätsel...

falls sich also jemand gut auskennt und weiß wies geht... wäre nicht schlecht..;-)

PS: Bild zoomen geht ja schon:.. aber eben was alts Zoomen und dann was neues (im neuen Maßstab) dazu zeichnen ... das wäre nicht schlecht!
 
Zurück