![]() |
Kontinente und Länder grafisch anklickbar?
Hallo..
ich programmiere ein Geografie-Lerntool. ich würde einen Teil gerne so realisieren, das der benutzer z.bsp aufgefordert wird auf ein bestimmtes Land zu klicken und eine Weltkarte vor sich hat...wie kann ich realisieren das die jeweiligen Länder gehighlighted werden wenn ich mit der maus drüber bin bzw das tool auch realisiert wenn das richtige oder falsche land gedrückt wurde? mein problem ist nicht die funktion selbst sondern die form der Länder..da diese ja keine rechteckigen TImage formen haben ;D danke für ideen |
AW: Kontinente und Länder grafisch anklickbar?
|
AW: Kontinente und Länder grafisch anklickbar?
Ich würde die Länder mit Polygonen nachzeichnen. Dann reicht es zu prüfen ob sich die Maus innerhalb eines Polygons befindet.
Das ist grob vergleichbar mit dem Tipp von DeddyH, wobei ich Polygone interessanter finde, da man sie zu Not leichter skalieren kann. |
AW: Kontinente und Länder grafisch anklickbar?
In 2013 würde ich sowas auf SVG/HTML5-Basis realisieren.
Die Ländern/Kondinete liegen als SVG-Grafik vor und du realisiert die Implementierung mittels JavaScript. |
AW: Kontinente und Länder grafisch anklickbar?
danke euch.
gibts da ne komponente für die empfehlenswert ist? mit polygonen hab ich noch nie gearbeitet,werd mich da mal reinfuchsen. |
AW: Kontinente und Länder grafisch anklickbar?
Zitat:
Regionen könnnen auch mit Polygonen definiert werden und dann mit ![]() |
AW: Kontinente und Länder grafisch anklickbar?
danke ich schau es mir mal an
|
AW: Kontinente und Länder grafisch anklickbar?
Zitat:
|
AW: Kontinente und Länder grafisch anklickbar?
die länder nachzeichnen...wow, das sieht nach einer höllenarbeit aus..ne zeichnen komponente wo ich die linien einfach mit der maus nachzeichne und die polygone so definiere gibts nicht etwa? ;D
|
AW: Kontinente und Länder grafisch anklickbar?
TMS hat eine Komponente, wo Du auf einem Bitmap ein oder mehrere Polygone legen kannst, die dann anklickbar sind. Tja, kostet aber Geld.
|
AW: Kontinente und Länder grafisch anklickbar?
verrätst du mir wie die heisst? hast nen Link?
hab schon ![]() ein traum...verdammt die brauch ich xD |
AW: Kontinente und Länder grafisch anklickbar?
Genau die
|
AW: Kontinente und Länder grafisch anklickbar?
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:
Aber ich hab mal Just4Fun mal schnell ein Beispiel geschrieben (weil ich es auch noch nie gemacht habe und mich das interessiert hat) und hier ist das Ergebnis. Man kann hier die Grenzen nachzeichnen und wenn man fertig ist, erkennt das Programm ob Mauszeiger drin oder draußen ist. |
AW: Kontinente und Länder grafisch anklickbar?
Darauf kann man doch schon gut aufbauen, für "schnell zusammengetippelt" nicht schlecht ;)
Allerdings fand ich die Idee, von dem einen in dem verlinkten Beitrag von DaddyH auch nicht schlecht. Also die Sache mit den 2 Bildern und dann die Bundesländer auf dem 2 Bild in einer jeweils anderen Farbe einfärben, und beim klick auf ein Bundesland halt den Ounkt im 2 Bild erkennen und daran dann das Bundesland erkennen. Sowas lässt sich doch auch fix realisieren, denke dafür brauch man kein Geld ausgeben ;) |
AW: Kontinente und Länder grafisch anklickbar?
Zitat:
Ändert nichts, das sie das heute auch noch behaupten könnten. Link? |
AW: Kontinente und Länder grafisch anklickbar?
Im Moment hilft das nicht, aber passt trotzdem:
Auf den Delphi-Tagen in Heidelberg habe ich mich eine Weile mit David I. unterhalten und er zeigte mir sein aktuelle Firemonkey-Projekt: Er hatte eine Weltkugel, die man drehen und zoomen konnte, dann erschienen zuerst die Kontinente gefolgt von den Länderumrissen. Mit einem Klick aufs Land gab es dann eine Infografik. Das sah schon sehr beeindruckend aus. Mal sehen vielleicht taucht dieses später mal in Delphi auf. Ohne Animation kenne ich sowas aus SAS oder ArgGis. Grüße // Martin |
AW: Kontinente und Länder grafisch anklickbar?
Link habe ich nicht, aber ich hatte mal einen Kumpel mit dem ich gleichzeitig anfing Delphi zu programmieren. Ich hatte meine Erfahrungen mit C64 und dann mehr oder weniger eine Pause bis Delphi 1, er beim Schneider PC. Er hat aber Delphi später nie so richtig verstanden. Wir wollten was zusammen als Lernübung programmieren, ich übernahm den einen Part, er sollte einen Editor programmieren. Paar Tage später fragte ich nach wie weit er ist, da ich mit meinem Part fertig war. Er meinte, dass er noch nichts gemacht hat, aber das er sich gleich hinsetzt und mir den Editor schnell programmiert. Dann kam er eine Stunde später auch vorbei mit einer Diskette und ich war begeistert. "Den Editor hast du innerhalb einer Stunde programmiert?" - habe ich gefragt. Im ersten Moment war ich richtig eingeschüchtert. Während ich meine ersten Gehversuch nach paar Jahren Abstinenz machte, präsentiert er mir so aus dem Handgelenk einen Editor, den er innerhalb einer Stunde programmiert hat. Der sah richtig gut aus. Dann habe ich den gestartet, etwas geschrieben, dann paar Buttons geklickt und nichts passierte. "Da funktioniert was nicht" - habe ich gesagt - "bei keinem Button oder Menü". "Kann nicht sein" - meinte er. Des Rätsels Lösung war, er hat nur die Menüs und Buttons erstellt (gab es damals nicht einen Generator für so was?). Er dachte tatsächlich das das ausreicht. Er dachte die Komponenten erledigen den Rest.
Letztendlich klappte es dann doch nicht mit ihm, er verfiel in einer Art Programmierer-Paranoia. Jedes Mal wenn wir etwas programmieren wollten, kam er mit dem Problem, dass wir auf keinen Fall ein Spagetticode programmieren dürfen. Egal was ich machte, er kam immer mit dem Spagetticode. Manchmal verzögerte sich die Arbeit um Tage, weil er mir die Nachteile eines Spagetticodes offerierte. Darüber konnte er stundenlang reden. Es gibt nichts schlimmeres bei modernen Programmierung - hat er gelesen - als wenn man Spagetticode programmiert. Und weil er Angst hatte einen Spagetticode zu programmieren, hat er letztendlich nie was programmiert. Die Angst ein Spagetticode zu programmieren war einfach zu groß bei ihm. Achso, ja, ne, Link habe ich leider nicht. Sorry, bin etwas vom Thema ab. |
AW: Kontinente und Länder grafisch anklickbar?
Wahnsinn. Bewegende Anekdote. Ernsthaft. Frag' deinen Kumpel mal, wem er unähnlicher wird, wenn er Spaghetticode programmiert?
|
AW: Kontinente und Länder grafisch anklickbar?
Zitat:
ahhhhh...du bist einfach der beste!! ernsthaft! ich war schon verzweifelt weil ich TMS HotSpotImage nicht zum laufen kriege wegen nem blöden fehler, und dann kommt Popov mit so was genialem ums eck! genau was ich brauche! wäre es möglich das wenn das polygon fertiggezeichnet ist, die koordinaten die ich alle geklickt habe irgendwo angezeigt werden? so dass ich sie in das eigentliche programm einfügen kann in dem die polygone aller länder erstellt werden? dann würde ich dein tool zum auslesen der polygon koordinaten verwenden wenn ich darf. ich werde dich dankend erwähnen :D unglaublich..kleistert er sowas mal eben zusammen :D |
AW: Kontinente und Länder grafisch anklickbar?
Natürlich ist das möglich. Wenn du den Code analysierst wirst du feststellen, dass die Daten in einem TPoint Array gespeichert sind. Den brauchst du nur abspeichern wie du willst. Und wenn du die Daten in einer Ini speichern willst, dann kannst du es auch als String speichern.
Ich hab hier mal spaßeshalber die Daten in ein String gespeichert und zurück
Delphi-Quellcode:
var
s: string; i: Integer; begin //--- Zerlegt TPoint-Array in ein String s := ''; for i := 0 to High(PolyArray) do begin s := s + Format('%d|%d', [PolyArray[i].X, PolyArray[i].Y]); if i < High(PolyArray) then s := s + ','; end; //--- Ende. Daten sind im String als Datenkette übergeben //Test, Ausgabe ShowMessage(s); ShowMessage('Jetzt wird alles gelöscht und neu gezeichnet.'); //--- Datenkette im String an TPoint-Array übergeben SetLength(PolyArray, 0); with TStringList.Create do try CommaText := s; SetLength(PolyArray, Count); for i := 0 to Count - 1 do begin PolyArray[i].X := StrToInt(Copy(Strings[i], 1, Pos('|', Strings[i]) - 1)); PolyArray[i].Y := StrToInt(Copy(Strings[i], Pos('|', Strings[i]) + 1, MaxInt)); end; finally Free end; //--- Ende. Daten aus String sind an TPoint-Array übergeben //Test, Neuzeichnen Button2Click(nil); end; |
AW: Kontinente und Länder grafisch anklickbar?
Zitat:
![]() ![]() |
AW: Kontinente und Länder grafisch anklickbar?
Hi Pfaffe, das es das gibt, weiß ich. Aber ob es in 10-20 Jahren die Programmierung komplett ersetzt, war meine Frage. Trotzdem Danke für die Links, ich les mir das in Ruhe durch.
Sorry für OT. |
AW: Kontinente und Länder grafisch anklickbar?
Jetzt gehen wir schon wieder etwas vom Thema ab, aber guck dir mal ActionMenus an, die ich aus irgendeinem Grund sträflich übersehen habe. Je nachdem was, reicht es tatsächlich nur den Menüpunkt einzufügen und Programmierarbeit wird abgenommen. Ok, im Kleinen, aber immerhin.
|
AW: Kontinente und Länder grafisch anklickbar?
![]() |
AW: Kontinente und Länder grafisch anklickbar?
So ganz spontan würde ich sagen, die MausKlick innerhalb
Polygon ist wäre mir zu schwierig zum Umsetzen. Die Karte ist in einem Rechteck eingebettet. Jedes Polygon ist in einer anderen Farbe eingefärbt. Wobei bereits ein für das menschliche Auge nicht erkennbarer Unterschied (RGB(100,100,100) zu RGB(99,100,100)) genügen würde. Nun holt man sich die Farbe unter dem MausZeiger, wenn die Maus innerhalb des Rechteckes ist (ScreenToClient bzw. ClientToScreen) und kann mit einem FloodFill den gesamten Bereich gleicher Farbe ändern. Usw. MfG, terence |
AW: Kontinente und Länder grafisch anklickbar?
ich benutze ThotspotImage von TMS, ist perfekt und genau was ich brauche, topic kann zu von mir aus. danke für eure konstruktive kritik und den tip mit hotspotimage!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz