WPF: Weltkarte für Risiko

cav3man

Grünschnabel
Moin moin

Ich grüble gerade über ein Problem und finde keine Lösung die mich zufrieden stimmt. Daher hoffe ich das einer von euch vielleicht eine zündende Idee hat =D.

Zur Zeit Programmiere ich ein Multitouch Risiko für Tabletpcs. (C# 3.0 .NET 3.5).
Für Risiko brauche ich logischerweise auch eine Weltkarte mit der man Interagieren kann.
Ich möchte das man jedes Land einzeln anklicken kann um Einheiten zu verteilen bzw. Angriffe durchzuführen etc.

Außerdem würde ich gerne verschiedene Ansichten ermöglichen.
Einmal die Standartansicht (Genauso wie beim Brettspiel).
Dann eine weitere Ansicht in der die Länder in der Farbe angezeigt werden die der jeweilige Besetzer hat und vielleicht noch ein paar weitere Features.

Ich habe bisher allerdings nur drei Ideen die mir alle nicht wirklich gefallen.

1. Ich baue die Landkarte from Scratch mit Vektoren.... Allerdings weiß ich dann nicht wie ich die Mausposition umrechnen kann, um zu wissen auf welchem Land sich der Cursor befindet. Außerdem ich das eigentlich zuviel Aufwand.

2. Ich nehme ein Bitmap und Färbe die einzelnen Länder in unterschiedlichen Farben und Schattierungen (z.B. Kontinente in einer einheitlichen Farbe und die beinhalteten Länder in unterschiedlichen Schattierungen dieser Farbe). Dann ziehe ich mir die Farbe an der Position des Cursors und kann daraus bestimmen auf welchem Land dieser sich befindet. Allerdings weiß ich dann nicht wie ich Länder umfärben kann.

3. Ich nehme einfach Rechteckige Länder (Button, Imagebox, etc). Damit könnte ich alle gewünschten funktionalen Anforderungen umsetzen... aber im Ernst... das sieht einfach nur besch***** aus.

Ich hoffe ich versteht mein Problem und könnt mir helfen.

Viele Grüße
cav3man
 
Hab damals etwas ähnliches gemacht...

Habs dann so gemacht:

1. Einmal die gesamte Karte als Hintergrundbild zeigen

2. Jetzt die einzelnen Länder mit einem Malprogramm ausschneiden
sodas du jedes Land quasi als Puzzlestück vorliegen hast.

3. Jeder der Länderfragmente packst du in ein Image Element und ordnest es auf dem
Hintergrund natürlich so an das sich Puzzelstück und Hintergrund decken.

Damit hast du schonmal die Möglichkeit ein Land umzufärben / hervorzuheben / Zoom etc...


Jetzt zur Erkennung was wo angeklickt wurde.

1. Das "Click" Event des Image eines Puzzlestücks nehmen (Ich weiss allerdings jetzt nicht ob transparente Bildbereiche auch erkannt werden - was wir ja nicht wollen)

oder...
2. In kommerziellen Spielen wir parallel zur eigentlichen Karte eine kleine Karte geführt wo die Länder jeweils eine bestimmte Farbe haben , klickt der User auf die grosse Karte wird die Mausposition in die kleine Karte umgerechnet und anhand der dortigen Canvas Farbe das Land bestimmt.

Ich hoffe damit erstmal nen Ansatz geliefert zu haben :)
 
Hi...

Danke schonmal für die Antwort.

Auf das erste bin ich in der Zwischenzeit schon gekommen.. leider wird die Picturebox als rechteckiges Element behandelt. Dementsprechend also unbrauchbar.
Aber die 2te Lösung finde ich sehr Interessant. Das werd ich mal ausprobieren.

Gruß
Cav3man
 
Du arbeitest mit WPF, vielleicht folgender Vorschlag:

Du renderst deine Weltkarte zu Spielbeginn aus Koordinaten der Grenzen, hierbei wird jedes Land einzeln gerendert. Verwenden würde ich das Polygon, welches man in WPF zur Verfügung hat.

Schau mal hier: http://msdn.microsoft.com/en-us/library/ms747393.aspx

Ich vermute, dass dieses Polygon auch auf Click, MouseOver etc. reagiert. Dementsprechend sollte es kein Problem sein die Länder zu erkennen und zu manipulieren.

Als Datengrundlage für die Grenzen der Länder würde ich mal nach einer SVG-Grafik einer Weltkarte suchen. SVG? Grob: Ein Grafikdateiformat, welches Vektorgrafiken in XML speichert. ;)
Hier eine Karte: http://wiki-de.genealogy.net/Bild:Karte_Regional_Weltkarte.svg

Kleiner Hinweis: Ich habe bisher noch nichts mit WPF gemacht, bin mir jedoch recht sicher, dass sich dein Problem so lösen lässt. ;)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück