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]