Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Kontinente und Länder grafisch anklickbar? (https://www.delphipraxis.net/173001-kontinente-und-laender-grafisch-anklickbar.html)

Spectre 2. Feb 2013 10:39

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

DeddyH 2. Feb 2013 10:43

AW: Kontinente und Länder grafisch anklickbar?
 
http://www.entwickler-ecke.de/viewtopic.php?t=111027

Popov 2. Feb 2013 10:51

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.

Bernhard Geyer 2. Feb 2013 10:59

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.

Spectre 2. Feb 2013 11:00

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.

Sir Rufo 2. Feb 2013 11:03

AW: Kontinente und Länder grafisch anklickbar?
 
Zitat:

Zitat von Popov (Beitrag 1201746)
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.

Das mit den Polygonen ist in dem Link von DeddyH aber auch enthalten.

Regionen könnnen auch mit Polygonen definiert werden und dann mit PtInRegion abfragen

Spectre 2. Feb 2013 11:09

AW: Kontinente und Länder grafisch anklickbar?
 
danke ich schau es mir mal an

Popov 2. Feb 2013 11:18

AW: Kontinente und Länder grafisch anklickbar?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1201749)
Das mit den Polygonen ist in dem Link von DeddyH aber auch enthalten.

Ok, hab es nicht richtig analysiert, hab es übersehen.

Spectre 2. Feb 2013 11:32

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

Jens01 2. Feb 2013 11:42

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.

Spectre 2. Feb 2013 11:51

AW: Kontinente und Länder grafisch anklickbar?
 
verrätst du mir wie die heisst? hast nen Link?

hab schon

http://www.tmssoftware.com/site/hsimg.asp

ein traum...verdammt die brauch ich xD

Jens01 2. Feb 2013 11:58

AW: Kontinente und Länder grafisch anklickbar?
 
Genau die

Popov 2. Feb 2013 12:25

AW: Kontinente und Länder grafisch anklickbar?
 
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:

Zitat von Spectre (Beitrag 1201755)
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

Sowas nennt man programmieren ;) Laut Zukunftsforscher wird es in 20 Jahren eine Programmiersprache geben wo man nur Komponenten klicken muss um z. B. sowas wie Office 2010 zu programmieren, aber bis dahin ist programmieren Knochenarbeit und muss man alles schon alleine machen ;)

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.

lbccaleb 2. Feb 2013 12:33

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 ;)

Furtbichler 2. Feb 2013 15:14

AW: Kontinente und Länder grafisch anklickbar?
 
Zitat:

Zitat von Popov (Beitrag 1201761)
Laut Zukunftsforscher wird es in 20 Jahren eine Programmiersprache geben wo man nur Komponenten klicken muss um z. B. sowas wie Office 2010 zu programmieren

Ich glaube, das ist veraltet und *war* vor 20 Jahren der Traum der Forscher für 2010. Ich kann mich jedenfalls noch dran erinnern.

Ändert nichts, das sie das heute auch noch behaupten könnten. Link?

mschaefer 2. Feb 2013 15:41

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

Popov 2. Feb 2013 15:44

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.

Bjoerk 2. Feb 2013 17:17

AW: Kontinente und Länder grafisch anklickbar?
 
Wahnsinn. Bewegende Anekdote. Ernsthaft. Frag' deinen Kumpel mal, wem er unähnlicher wird, wenn er Spaghetticode programmiert?

Spectre 3. Feb 2013 00:17

AW: Kontinente und Länder grafisch anklickbar?
 
Zitat:

Zitat von Popov (Beitrag 1201761)
Zitat:

Zitat von Spectre (Beitrag 1201755)
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

Sowas nennt man programmieren ;) Laut Zukunftsforscher wird es in 20 Jahren eine Programmiersprache geben wo man nur Komponenten klicken muss um z. B. sowas wie Office 2010 zu programmieren, aber bis dahin ist programmieren Knochenarbeit und muss man alles schon alleine machen ;)

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.


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

Popov 3. Feb 2013 09:11

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;

Pfaffe 3. Feb 2013 09:31

AW: Kontinente und Länder grafisch anklickbar?
 
Zitat:

Zitat von Furtbichler (Beitrag 1201802)
Zitat:

Zitat von Popov (Beitrag 1201761)
Laut Zukunftsforscher wird es in 20 Jahren eine Programmiersprache geben wo man nur Komponenten klicken muss um z. B. sowas wie Office 2010 zu programmieren

Ich glaube, das ist veraltet und *war* vor 20 Jahren der Traum der Forscher für 2010. Ich kann mich jedenfalls noch dran erinnern.

Ändert nichts, das sie das heute auch noch behaupten könnten. Link?

http://wwwiti.cs.uni-magdeburg.de/~dobrowol/sem1.pdf
http://www.hs-heilbronn.de/1024810/2...ermaschine.pdf

Furtbichler 4. Feb 2013 07:54

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.

Popov 4. Feb 2013 08:50

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.

v2afrank 4. Feb 2013 09:22

AW: Kontinente und Länder grafisch anklickbar?
 
Steema bietet auch eine Mapdarstellung an. In wie weit die etwas taugt und ab welcher Version die dabei ist kann ich leider nicht sagen

terence14 4. Feb 2013 17:00

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

Spectre 12. Feb 2013 20:51

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 03:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz