AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi 2 Bilder übereinander mit StringGrid. Canvas. StrechDraw?
Thema durchsuchen
Ansicht
Themen-Optionen

2 Bilder übereinander mit StringGrid. Canvas. StrechDraw?

Ein Thema von snabbochkort · begonnen am 19. Jul 2003
Antwort Antwort
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
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 19:41 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