Einzelnen Beitrag anzeigen

snabbochkort

Registriert seit: 19. Jul 2003
1 Beiträge
 
#1

2 Bilder übereinander mit StringGrid. Canvas. StrechDraw?

  Alt 19. Jul 2003, 23:59
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]
  Mit Zitat antworten Zitat