AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bundesländer mit Namen versehen, falls Mausanzeiger drüber f
Thema durchsuchen
Ansicht
Themen-Optionen

Bundesländer mit Namen versehen, falls Mausanzeiger drüber f

Ein Thema von Hartfrid Krause · begonnen am 11. Mär 2007 · letzter Beitrag vom 12. Mär 2007
Antwort Antwort
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#1

Bundesländer mit Namen versehen, falls Mausanzeiger drüber f

  Alt 11. Mär 2007, 08:30
Ich habe ein Programm geschrieben, welches automatisch die Bundesländer (oder die Europaländer) nach den jeweils stärksten Parteien einfärbt.
Der Umrisse liegt jeweils als bmp.Dateien vor, die dann eingefärbt werden.
Für Deustchland gilt, dass alle Bundesländer entweder rot oder schwarz eingefärbt werden (je nach Auswahl des Wahlzeitpunktes.
Das Programm soll nun je nach Mauszeiger anzeigen 'Hessen' oder Bayern, je nachdem wo ich mich gerade bewege.
Eine Überlegung vn NamenLozer war, eine 2. Bitmap im Speicher mit jeweils v e r s c h i e d e n e n Farben abzuspeichern und diese Werte jeweils mit PaintBox1MouseMove abzufragen.

Dies klappt aus 2 Gründen noch nicht:

1. die unterschiedlich farbig gestalteten Bundesländer (das ist nicht das Problem) werden mit folgendem Programmteil nur schwarz-weiß abgespeichert:

Delphi-Quellcode:
procedure Tform1.Button2Click(Sender: TObject);
begin
  Bitmap1.Canvas.CopyRect(Rect(0, 0, Bitmap1.Width, Bitmap1.Height),
  PaintBox1.Canvas, Rect(0, 0, Bitmap1.Width, Bitmap1.Height));
  Bitmap1.SaveToFile('B.bmp');//wird jetzt überschrieben!
  bitmap1.free;
end;
Dies mag daran liegen, dass ich auf dem canvas und nicht auf der paintbox farbig markiere (aber wie mache ich es ansonsten?)

Delphi-Quellcode:
procedure tform1.einfaerben(sender:TObject);
begin
   with canvas do
   with paintbox1 do
   begin
  brush.color:= clbackground; //NRW
  floodfill(paintbox1.Left+120,paintbox1.Top+260,clblack, fsborder);

   brush.color:= clskyblue; //RHPf
   floodfill(paintbox1.Left+80,paintbox1.Top+400,clblack, fsborder);

   brush.color:= clblack; //Nieders
   floodfill(paintbox1.Left+170,paintbox1.Top+150,clblack, fsborder);
//usw.
end;
end;
Außerdem klappt das Abfragen des bunten Bildes auf dem canvas noch nicht:

Delphi-Quellcode:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  label1.caption:= '';
  if (X <= paintbox1.Width) and (Y <= paintbox1.Height) then
    case paintbox1.canvas.pixels[X, Y] of
      clred: label1.caption := 'Thüringen';
      clgreen: label1.caption := 'hessen';
      clpurple: label1.caption := 'Rheinland-Pfalz';
      //...
    end;
end;
Deshalb meinen Fragen:
1.Gibt esa einen grundsättzlich anderen Weg, duie Bundeslänmder anzuzeigen, wenn ich mit der Maus auf die Fläche komme?
Wenn nein, dann
2. Wie speichere ich dasbunte Bild (16 Farben 16 Bundesländer) so ab, dass es farbig gespeichert wird.
und
3. Wie realisiere ich das mit dem Mauszeiger im Speicher

Für jede Unterstützung dankbar.

[edit=Matze]Delphi-Tags gesetzt. Bitte zukünftig selbst erledigen, danke. Mfg, Matze[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Bundesländer mit Namen versehen, falls Mausanzeiger drüb

  Alt 11. Mär 2007, 11:17
Mach die Einfärbung doch manuell mit einem Zeichenprogramm, sodass die verschiedenen Bundesländer auch wirklich verschieden eingefärbt sind!
Und dann kannst du die bunte "Map" im Hintergrund mitbenutzen...

Und achte darauf, dass die beiden paintboxen auch kongruent sind, also gleiche Breite und Höhe!
Und: Was ist das???if (X <= paintbox1.Width) and (Y <= paintbox1.Height) then ... Wenn das Move ausgelöst wird, dann kannst du glaub ich davon ausgehen, dass X und Y auf der PaintBox sind

Achso... wenn du die "Hintergrund-Map" eingefärbt hast (natürlich alles auf BMP-Ebene, wegen Qualitätsverlust) würde ich dir empfehlen mit einer Lupe oder ähnlichem, was Farben festellen kann, den genauen Hexadazimalen Farbwert nehmen, damit es keine Probleme bei der Farberkennung gibt...
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#3

Re: Bundesländer mit Namen versehen, falls Mausanzeiger drüb

  Alt 12. Mär 2007, 08:16
Moin!

Da hätte ich vielleicht eine komplett fertige Lösung für Dich, inklusive einstellbarer Hints: TPainted Buttons

Grüßle!
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 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