![]() |
Tbitmap für Animation
Also ich will animiertes erzeugen (Andorra geht nicht, weil delphi 5).
da hab ich das mit dem Tbitmap gemacht, wo es immer mit nem Timer das Bild jeweils nach rechts schiebt (ich habe die einzelbilder in einem bmp)
Delphi-Quellcode:
Das Problem: bisher ging es nur so, wie ich es oben habe, ich lade da aber jedes mal das Bild neu, kann man das irgendwie so schreiben, dass es nur bei c=0 das lädt und in den restlichen dann das geladene anwendet? oder sollte ich alles anders machen?
case c of //c als Zählvariable
0..9: begin Bmp := TBitmap.Create; try Bmp.LoadFromFile('floating_e.bmp'); Iskull.Canvas.Draw(-1*(c*48), 0, Bmp); //48 ist Bildbreite der Einzelbilder finally FreeAndNil(Bmp); end; inc(c); if c>9 then //wenn alle einzelbilder durch, wieder von vorn beginnen begin c:=0; end; end; end; |
Re: Tbitmap für Animation
Zitat:
Delphi-Quellcode:
Das Bitmap müsstest du dann natürlich außerhalb der Case-Anweisung erstellen/freigeben. Die Case-Anweisung müsste dann (samt Schleife oder was du nutzt) in den try-Abschnitt.
if c = 0 then
Bmp.LoadFromFile('floating_e.bmp'); |
Re: Tbitmap für Animation
Delphi-Quellcode:
So ist es jetzt, nun müsste mir noch jemand sagen, wo das finally und so hin muss, weil so geht es nicht, da hat der bei der ausführung bem 1. befehl nach dem convas ein problem
procedure TForm1.TskullTimer(Sender: TObject);
var Bmp: TBitmap; begin label1.caption:=inttostr(c); try if c=0 then begin Bmp := TBitmap.Create; Bmp.LoadFromFile('floating_e.bmp'); end; case c of 0..9: begin Iskull.Canvas.Draw(-1*(c*48), 0, Bmp); inc(c); if c>9 then begin c:=0; end; end; end; //case of ende finally FreeAndNil(Bmp); end; end; |
Re: Tbitmap für Animation
Hmm, so vielleicht?
Delphi-Quellcode:
Noch besser wäre es natürlich, wenn das bitmap nicht bei jeden ontime-aufruf geladen werden müsste, z.b. so:
procedure TForm1.TskullTimer(Sender: TObject);
var Bmp: TBitmap; begin label1.caption:=inttostr(c); Bmp := TBitmap.Create; try Bmp.LoadFromFile('floating_e.bmp'); c := c mod 10; // nach 9 kommt wieder 0 Iskull.Canvas.Draw(-1*(c*48), 0, Bmp); inc(c); finally FreeAndNil(Bmp); end; end;
Delphi-Quellcode:
edit: [ot]Öhm, Schrimm, bei deiner Homepage kommt bei mir eine Virus-Meldung o.O[/ot]var Bmp: TBitmap; ... procedure TForm1.TskullTimer(Sender: TObject); begin label1.caption:=inttostr(c); c := c mod 10; // nach 9 kommt wieder 0 Iskull.Canvas.Draw(-1*(c*48), 0, Bmp); inc(c); end; ... initialization Bmp := TBitmap.Create; Bmp.LoadFromFile('floating_e.bmp'); finalization FreeAndNil(Bmp); |
Re: Tbitmap für Animation
das 2. Funktioniert super :bounce1:
ich kannte das initialization noch gar nicht, ist abe reine gute variante danke für eure Hilfe :hello: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz