AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Tbitmap für Animation
Thema durchsuchen
Ansicht
Themen-Optionen

Tbitmap für Animation

Ein Thema von schrimm · begonnen am 5. Apr 2007 · letzter Beitrag vom 5. Apr 2007
Antwort Antwort
schrimm
(Gast)

n/a Beiträge
 
#1

Tbitmap für Animation

  Alt 5. Apr 2007, 16:21
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:
 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;
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?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Tbitmap für Animation

  Alt 5. Apr 2007, 16:24
Zitat von schrimm:
kann man das irgendwie so schreiben, dass es nur bei c=0 das lädt und in den restlichen dann das geladene anwendet?
Du beantwortest dir die Frage ja selbst:

Delphi-Quellcode:
if c = 0 then
  Bmp.LoadFromFile('floating_e.bmp');
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.
  Mit Zitat antworten Zitat
schrimm
(Gast)

n/a Beiträge
 
#3

Re: Tbitmap für Animation

  Alt 5. Apr 2007, 16:47
Delphi-Quellcode:
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;
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
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Tbitmap für Animation

  Alt 5. Apr 2007, 16:56
Hmm, so vielleicht?
Delphi-Quellcode:
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;
Noch besser wäre es natürlich, wenn das bitmap nicht bei jeden ontime-aufruf geladen werden müsste, z.b. so:

Delphi-Quellcode:

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);
edit: [ot]Öhm, Schrimm, bei deiner Homepage kommt bei mir eine Virus-Meldung o.O[/ot]
  Mit Zitat antworten Zitat
schrimm
(Gast)

n/a Beiträge
 
#5

Re: Tbitmap für Animation

  Alt 5. Apr 2007, 17:04
das 2. Funktioniert super
ich kannte das initialization noch gar nicht, ist abe reine gute variante
danke für eure Hilfe
  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 20: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