AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi "verdeckt" liegende bitmap abfragen
Thema durchsuchen
Ansicht
Themen-Optionen

"verdeckt" liegende bitmap abfragen

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

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

"verdeckt" liegende bitmap abfragen

  Alt 17. Mär 2007, 16:34
Ich habe eine mit unterschiedlichen Farben gefüllt Karte deutscher Bundesländer.(bitmap2)
Wenn ich auf diese Farben stoße, wird der Name des Bundeslandes angezeigt.
Ich will eine gleichgroße - an gleicher Stelle - neue Landkarte der BRD drüber legen(bitmap1) und sie nach den Parteien einfärben.
Nun will ich über die neu Landkarte (bitmap1) drüber fahren und aus der "bunten" Karte mit onmousemove den Namen der Bundeslandes abfragen.
Das Klappt nicht.
Hier die beiden Karten:
Delphi-Quellcode:
procedure tform1. paintbox2paint(sender:TObject);
begin
Bitmap2 := TBitmap.Create;
 Bitmap2.LoadFromFile('laenderbunt.bmp');
 paintbox2.Canvas.Draw(0,0,Bitmap2);
 bitmap2.free;
 Bitmap1 := TBitmap.Create;
 Bitmap1.LoadFromFile('laender.bmp');
 paintbox1.Canvas.Draw(0,0,Bitmap1);
 bitmap1.free;
end;
Und hier die Abfrage über die bitmap2
Delphi-Quellcode:
procedure TForm1.paintbox2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
with canvas do begin
    if (X <= paintbox2.Width) and (Y <= paintbox2.Height) then
    case paintbox2.canvas.pixels[X, Y] of
      clcream:label1.Caption:='Nordrhein-Westfalen';
      $0005727A:label1.Caption:='Rheinland-Pfalz';
      $006F6F11:label1.Caption:='Niedersachsen';
      $00C551D9:label1.Caption:='Hessen';
      $0031F97C:label1.Caption:='Baden-Würthemberg';
.....//mit diesen Farben sind die Bundesländer gefüllt.
end;end;end;
Lege ich die bunte nicht direkt über die bitmap1, so kann ich bei den Bundesländer, die sichtbar sind, über die bitmap1 fahren und den Namen erkennen.

[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: "verdeckt" liegende bitmap abfragen

  Alt 17. Mär 2007, 19:35
Ändere deinen Code mal so ab:

Hier die beiden Karten:
Delphi-Quellcode:
procedure tform1. paintbox2paint(sender:TObject);
begin
Bitmap2 := TBitmap.Create;
Bitmap2.LoadFromFile('laenderbunt.bmp');
//paintbox2.Canvas.Draw(0,0,Bitmap2);
//bitmap2.free; NICHT FREE!!
Bitmap1 := TBitmap.Create;
Bitmap1.LoadFromFile('laender.bmp');
paintbox2.Canvas.Draw(0,0,Bitmap1);
bitmap1.free;
end;
Und hier die Abfrage über die bitmap2
Delphi-Quellcode:
procedure TForm1.paintbox2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
with canvas do begin
    if (X <= Bitmap2.Width) and (Y <= Bitmap2.Height) then
    case Bitmap2.canvas.pixels[X, Y] of//Pixel vom Bitmap2 'laenderbunt.bmp' abfragen
      clcream:label1.Caption:='Nordrhein-Westfalen';
      $0005727A:label1.Caption:='Rheinland-Pfalz';
      $006F6F11:label1.Caption:='Niedersachsen';
      $00C551D9:label1.Caption:='Hessen';
      $0031F97C:label1.Caption:='Baden-Würthemberg';
.....//mit diesen Farben sind die Bundesländer gefüllt.
end;end;end;
Ich hoffe mal das es auch bei dir irgendwann mal klappt.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: "verdeckt" liegende bitmap abfragen

  Alt 17. Mär 2007, 20:01
Zitat von bitsetter:
Ändere deinen Code mal so ab:

Hier die beiden Karten:
Delphi-Quellcode:
procedure tform1. paintbox2paint(sender:TObject);
begin
Bitmap2 := TBitmap.Create;
Bitmap2.LoadFromFile('laenderbunt.bmp');
//paintbox2.Canvas.Draw(0,0,Bitmap2);
//bitmap2.free; NICHT FREE!!
Bitmap1 := TBitmap.Create;
Bitmap1.LoadFromFile('laender.bmp');
paintbox2.Canvas.Draw(0,0,Bitmap1);
bitmap1.free;
end;
Der arme Speicher!
Wenn jedesmal, wenn die Paintbox neu gezeicnet wird, ein neues Bitmap erzeugt und nicht wieder freigegeben wird, dann gute nacht!
Du solltest dir Bitmap1 und Bitmap2 global erstellen und im OnCreate der Form laden (laender.bmp und laenderbunt.bmp)
Im OnPaint malst du dann nur Bitmap1 ohne nochmal irgendwas zu erzeugen. Das MouseMove kannst du vom Viertelnibblesetter übernehmen
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: "verdeckt" liegende bitmap abfragen

  Alt 17. Mär 2007, 20:24
@inherited

Das mit dem OnPaint habe ich Ihm auch schon 2 mal erzählt Grafik als screenshot , es hat sich bis jetzt wie du siehst nicht geändert.

Zitat von inherited:
Du solltest dir Bitmap1 und Bitmap2 global erstellen
Macht er doch schon oder?
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: "verdeckt" liegende bitmap abfragen

  Alt 17. Mär 2007, 20:58
Jep, stimmt. Dennoch sollte er die bilder nur einmal laden.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Hartfrid Krause

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

Re: "verdeckt" liegende bitmap abfragen

  Alt 18. Mär 2007, 11:52
Danke für die Hinweise
Jetzt klappts gut
  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 03:08 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