Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Hintergrund setzen bei FormCreate (https://www.delphipraxis.net/47324-hintergrund-setzen-bei-formcreate.html)

mifuno 9. Jun 2005 12:15


Hintergrund setzen bei FormCreate
 
Hallo,
ich habe eine BMP-Grafik die ich als Hintergrund für ein Formular verwenden möchte.
Die Prozedur mit der ich dies auf das Form setze sieht folgendermaßen aus:
Delphi-Quellcode:
procedure TSpielForm.Hintergrund();
var img_bg:TBitmap;
    pos:TRect;
begin
   img_bg:= TBitmap.Create;
   img_bg.LoadFromFile('background.bmp');
   pos.Left := 0;
   pos.Top := 0;
   pos.Right := 298;
   pos.Bottom := 392;
   Canvas.StretchDraw(pos,img_bg);
end;
Wenn ich diese Prozedur aber nun innerhalb der Prodezur FormCreate aufrufe passiert nichts. Die Grafik wird nicht auf das Formular "gesetzt". Nur bei "OnMouseDown" oder ähnlichen Ereignissen wird der Hintergrund richtig gesetzt. Weiß jemand an was das liegt?

Danke.

ringli 9. Jun 2005 12:19

Re: Hintergrund setzen bei FormCreate
 
Funktioniert es vielleicht im OnPaint-Ereignis?

mifuno 9. Jun 2005 12:22

Re: Hintergrund setzen bei FormCreate
 
ja. super da funktioniert das. danke :-)

barf00s 9. Jun 2005 12:23

Re: Hintergrund setzen bei FormCreate
 
da wird es funktionieren, ... wie auch im OnShow / OnActivate ...

und vergiss nicht dein img_bg object nach dem StretchDraw wieder freizugeben

mifuno 9. Jun 2005 14:24

Re: Hintergrund setzen bei FormCreate
 
Zitat:

Zitat von barf00s
und vergiss nicht dein img_bg object nach dem StretchDraw wieder freizugeben

Zu der Freigabe habe ich auch gleich noch eine Frage. Wenn ich nun z.B. einen Spielstein fallen lassen möchte mache ich es zur Zeit mit

Delphi-Quellcode:
img_stein:= TBitmap.Create;
img_stein.LoadFromFile('sp1.bmp');
for i := 1 to 100 do {nur eine dummy-schleife}
begin
  spielFeld.Canvas.Rectangle(0,0,300,300);
  Rect.Left := 10;
  Rect.Right := 35;
  Rect.Top := 10+i ;
  Rect.Bottom := 35+i;
  spielFeld.Canvas.StretchDraw(Rect,img_stein);
  sleep(2);
end;
img_stein.free;
1. Da reicht es doch wenn ich das erst am Ende wieder freigebe, oder?
2. Gibt es auch noch eine andere Möglichkeit das fallen zu realisieren ohne ständig das aktuelle Bild mit einem Rechteck zu übermalen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:01 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