hallo,
habe folgendes Problem. Folgende Prozedur stellt das Ereignis dar, wenn mit der Maus über das Stringgrid "SGRSpielfeldtest" gefahren wird.
Es wird ein ein Bild "background.bmp" auf die entsprechende Zelle des Stringgrid mit Canvasstrechdraw angepasst ev. auch verzerrt völlig egal.
Nun möchte ich gern:
A) entweder ein zweites Bild mit einer bestimmten Intensität z.B. 30%Transparenz über das "background.bmp" - Bild legen.
oder
B) das Bild "background.bmp" vorher oder danach in einer bistimmten Farbe einfärben. Das es also z.B. einen Grünschleier über dem ganzen Bild bekommt.
Wofür ist das ganze? Ich muss ein Spielfeldeditor entwerfen und beim Mousemove, soll die Position des gewählten bildes im Spielfeld schon getestet werden, Ist der Platz zum ablegen der Mauer, Wasser,
ec. OK? --> dann Grünschleier über dem Bild sonst Roter Schleier über dem Bild. oder so ähnlich.
Hab zwar schon Transparenz gelesen aber ich will ja nur eine gewisse Transparenz erzeugen.
Sorry für die ausführliche Beschreibung aber hoffe, dann wird mein Problem etwas klarer.
Hier der Code, mit dem ich das Bild über einer Zelle anzeigenlasse. Sobald die Maus über einer neuen Zelle ist, wird die "letzteZelle" mit der Hintergrundfarbe überschrieben, also das Bild wieder gelöscht!
Delphi-Quellcode:
procedure TForm1.SGRspielfeldtestMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
MyRow, MyCol: Integer;
AktuelleZelle : TRect;
Bitmap : TBitmap;
begin
// alte Zelle löschen
SGRspielfeldtest.Canvas.FillRect(LetzteZelle);
Bitmap := TBitmap.Create;
SGRspielfeldtest.MouseToCell(x, y, MyCol, MyRow);
SGRspielfeldtest.Canvas.FillRect(LetzteZelle);
try
if (MyRow <> -1) and (Mycol <> -1) then
begin
AktuelleZelle := SGRspielfeldtest.CellRect(MyCol, MyRow);
LetzteZelle := AktuelleZelle;
Bitmap.LoadFromFile('..\Images\Backgrounds\background.bmp');
SGRspielfeldtest.Canvas.StretchDraw(AktuelleZelle, Bitmap);
end;
finally
Bitmap.Free;
end;
end;
Vielleicht kann mir ja jemand helfen oder einen Tipp geben, danke.
[edit=Daniel B]Titel korrigiert. Mfg, Daniel B[/edit]