Deutschland mit Polygon zeichnen

dlooney

Mitglied
Hi all,

ich habe vor in C# mit der GDI+ und dem DrawPolygon mir den Umriss von Deutschland zu zeichnen. Ja meine Frage gibt es da schon was:confused:, was ich aber nicht denke ^^ oder weiß jemand wo man vielleicht die Koordinaten für Deutschland herbekommt?

Danke schonmal im vorraus.

Gruß Dlooney
 
Zuletzt bearbeitet:
Eine Möglichkeit wäre, eine schwarz-weiß Grafik von Deutschland zu nehmen. Aus dieser erstellst du dir ein Koordinaten Array, welches du als Arbeitsgrundlage für dein Polygon nimmst.
 
bei der Bitmap gibts die FUnktion GetPixel da könntest du den Farbwert auslesen, das BIld selber müsstest du wie eine Schreibmaschine ablaufen von oben nach unten und dabei das erste und das letzte Pixel eines bestimmten Farbwertes merken.

Diese Werte in einer Liste gespeichert könntest du dann in einer txt Datei abspeichern und könntest dann dort später wieder draufzugreifen.

Da GetPixel nicht gerade performant vielleicht diese vorgehensweise:
->von oben nach unten, von Links nach rechts, bis zum ersten vorkommen
->von unten nach oben, von rechts nach links bis zum ersten vorkommen

und du hast deine Koordinaten einmal rundrum und musst nicht das komplette Bild durchsuchen.
Über Graphics.DrawPath könntest du das dann später anzeigen lassen.

Performanteres ist mir gerade nicht bekannt, aber eigentlich musst du eh blos einmal das Bild durchlaufen.

Edit: Probleme könnte es bei Inseln und Halbinseln geben :rolleyes:
 
Mein Vorschlag war auch mehr als Tipp gemeint, wie man an die Koordinaten kommen könnte. Eigentlich reicht es nicht aus, einfach nur die einzelnen Punkte zu lesen, da für ein Polygon die Reihenfolge der Punkte enorm wichtig ist (es werden ja Linien zwischen zwei Punkten gezogen). Desweiteren stellt sich ja die Frage wie genau das Polygon Deutschland wiedergeben soll. Ich denke im Zuge einer Optimierung ist es sinnvoll einige Pumkte zu entfernen, die nicht unbedingt notwendig sind

Beispiel:
Auf einer Strecke von A nach C liegt ein Punkt B genau auf der Linie. Punkt B ist nicht erforderlich. Man spart hier immerhin eine Linie Zeit.
Ähnliche Überlegungen kann man auch folgenden Fall anstellen:
Wieder eine Strecke von A nach C, diesmal liegt B circa 2-3 Pixel neben der Strecke. Gut, würde man die Strecke A, B, C zeichen gibt es eine sehr flache Spitze, aber auch hier könnte man B weglassen, wenn ein solcher leichter Knick verzichtbar ist.

Eine andere, etwas manuellere Idee ist:
Programm schreiben mit Picturebox. Deutschlandkarte in die Picturebox und durch Klicken jeden Punkt des Umrisses merken. Fertig!
 
ja, cool beide Ideen. Hab mir das eine auch schon so gedacht das ich mir per Mausklick auf die Landesgrenze dann die Koordinaten Speicher aber naja das ist sehr zeitaufwändig ^^. Das andere ist auch geil hab das mal probiert es kommt ca. die form raus aber wie schon geschrieben wurde da es Polygon ist sieht es durch die ganzen Koordinaten etwas ungewöhnlich aus ^^.

Kann ich dann den bereich zu einem Button machen? Also so das der bereich innerhalb des Polygon zum anklicken ist und das dann ein Event ausgelöst wird oder so?

Gruß
Dlooney
 
Du könntest dir z.B. ein UserControl bauen. Bei einem Klick auf das Control prüfst du, ob innerhalb des Polygon geklickt wurde. Falls dies so ist feuerst du einfach ein Click-Event, welches du in deiner Anwendung verarbeitest.
 
Danke an alle für die Tipps und Hilfe. Ich werd mir anschauen was so am besten die Lösungen sind paar hab ich schon ausprobiert :D
 
Zurück