Autor Beitrag
Terra
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 307

Windows 7 Ultimate
Delphi® XE3
BeitragVerfasst: Sa 20.07.13 16:37 
Moin !

Ich möchte gerne in mein Projekt eine Karte erstellen, die aus mehreren gleichmäßigen Einzelbildern besteht (Quadrate). Allerdings sollen nachträglich auf der Karte bestimmte Positionen markiert bzw. angezeigt werden. Im Grunde nichts anderes als bei Google Maps. Da ich bereits viel gesucht habe aber nichts dergleichen gefunden habe, würde es mich interessieren, wie ihr es anstellen würdet. Würdet ihr dazu eine kleine 2D Engine nutzen oder rein mit den am bord befindlichen Komponenten bewerkstelligen können?
Die Karte soll natürlich später auch mit der Maus bewegt und gezoomt werden können. Darunter auch Punkte ausgewählt und bestimmt werden.

Bin z.Z. ein bissel Hilflos und weiß nicht, wie ich bei der Sache anfangen soll.
Vielleicht könnt ihr mir ja paar Tips geben. (Möchte kein fertiges Projekt hier hingestellt bekommen)

Also, welche Komponenten kämen für sowas in frage um es recht einfach zu halten?

Liebe Gruß,
Terra
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 20.07.13 17:47 
Hallo Terra,

ohne viel mit 2D-Engines gearbeitet zu haben: schwerpunktmäßig geht es dabei doch um Kollisionsabfragen und bewegte Objekte. Ist das für ein Kartenprogramm wirklich nützlich?

Ich würde ein einfaches Zeichen-Interface für deine eingelesenen Daten und Bilder in einer separaten Unit implementieren, sodass du es später mit vertretbarem Aufwand austauschen kannst. Wichtig ist erst einmal, dass ein kleiner Teil läuft und du Änderungen am laufenden Programm testen kannst.

Man nehme:
  • eine TPaintbox
  • Eine TBitmap als Buffer zum Zwischenzeichnen. Diese sollte um einen verstellbaren Faktor größer sein als der am Ende sichtbare Bereich, damit beim Scrollen die Daten schon vorgeladen sind und nicht erst generiert oder gelesen werden müssen.
  • Eine Methode zum neu-Zeichnen der Buffer-Bitmap. Diese kann mit einem optionalen Parameter im Hintergrund ausgeführt werden, sodass während des Scrollens weitere Kartenbereiche nachgeladen werden können.

Das Scrollen würde ich vor dem Zoomen implementieren.

Mein Minesweeper-Klon funktioniert so, auch wenn er über ein einfaches Demo-Projekt wohl schon ein bisschen hinaus ist kannst du gerne fragen wie ich xyz darin implementiert habe. :)

Grüße,
Daniel

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)