![]() |
"verdeckt" liegende bitmap abfragen
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:
Und hier die Abfrage über die bitmap2
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;
Delphi-Quellcode:
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.
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; [edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit] |
Re: "verdeckt" liegende bitmap abfragen
Ändere deinen Code mal so ab:
Hier die beiden Karten:
Delphi-Quellcode:
Und hier die Abfrage über die bitmap2
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;
Delphi-Quellcode:
Ich hoffe mal das es auch bei dir irgendwann mal klappt.
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; |
Re: "verdeckt" liegende bitmap abfragen
Zitat:
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 :stupid: |
Re: "verdeckt" liegende bitmap abfragen
@inherited
Das mit dem OnPaint habe ich Ihm auch schon 2 mal erzählt ![]() Zitat:
|
Re: "verdeckt" liegende bitmap abfragen
Jep, stimmt. Dennoch sollte er die bilder nur einmal laden.
|
Re: "verdeckt" liegende bitmap abfragen
Danke für die Hinweise
Jetzt klappts gut |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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