Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Animation von TImages (https://www.delphipraxis.net/62394-animation-von-timages.html)

lebbesch007 3. Feb 2006 21:09


Animation von TImages
 
Hi, ich habe mal bei Hans101 geschaut, da ist es so das man TIMage so animieren (also mehrere Bilder nacheinander laden) kann,indem man mit dem Befehl Image1.canvas etc. ein weiteres Bild zeichnen kann, aber ich hab soweit keine Ahnung - Brauche Hilfe :!:

turboPASCAL 4. Feb 2006 10:55

Re: Animation von TImages
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es kommt immer darauf an was und wie gemacht werden soll. Ein TImage ist eigentlich keine gute Wahl da es sich hierbei um eine "Statische" Komponente handelt. Zwar kann man auf den Canvas des Images (bzw. des Pictures oder Bitmaps) zeichnen es wird aber bei der Darstellung zu einem Flackern kommen.
Ich würde eine Paintbox benutzen um selbst animierte Bbitmaps darzustellen oder gleich die Komponente TAnimation.
Eine Möglichkeit habe ich als Demo (Paintbox-Methode) mal Angehangen.

Siehe auch: [oh]BitBlt, StretchBlt[/oh]

lebbesch007 4. Feb 2006 11:07

Re: Animation von TImages
 
geht das auch ohne eine .avi datei?

lebbesch007 4. Feb 2006 11:09

Re: Animation von TImages
 
ok ,das Problem ist behoben. Danke für das tolle Beispiel :-D

lebbesch007 4. Feb 2006 11:44

Re: Animation von TImages
 
Jetzt tritt das Problem auf, dass ich ja ein anderes Avi als die Katze verwenden möchte --> ich habe kein Programm, das mir dann die Datei in 32x32 .avi umwandelt, wenn ich das avi größer mache, dann bringt mir Delphi dei Meldung, dass die Datei nicht geöffnet werden kann.

::Ich habe dabei versucht, auch mal animate1 und paintbox1 mit einem Timer nach rechts zu bewegen::

Bei animate1 flimmert es nicht, aber es flimmert leicht bei der paintbox, also würde ich animate2 bevorzugen, allerdings habe ich das oben genannte Problem mit der Erstellung der Animationen.

Vielleicht könnt Ihr mir ja einen Tipp geben (givs zu avis würde auch gehn, aber es müsste gif zu 32x32 sein oder???)

turboPASCAL 4. Feb 2006 11:50

Re: Animation von TImages
 
Du musst die AVI-Datei mit RLE - Komprimierung speichern um sie in einem TAnimate zu verwenden.

lebbesch007 4. Feb 2006 11:54

Re: Animation von TImages
 
Wo finde ich ein Programm mit RLE-Komprimierung?

lebbesch007 4. Feb 2006 13:36

Re: Animation von TImages
 
Ich habe inzwischen ein Programm gefunden

ontorius 15. Mär 2006 09:55

Re: Animation von TImages
 
Ich verstehe deine MyDawBitmap-Prozedur nicht.

turboPASCAL 15. Mär 2006 10:43

Re: Animation von TImages
 
Delphi-Quellcode:
procedure TForm1.MyDrawBitmap;
begin
  if not CheckBox1.Checked then // ist nicht CheckBox1 markiert dann nomal zeichnen
  begin
    BitBlt(
      PaintBox1.Canvas.Handle,  // Wohin zeichnen
      0,                        // X-Pos im Ziel
      0,                        // Y-Pos im Ziel
      PicWith,                  // Bildbreite
      PicHight,                 // Bildhöhe
      MyBitmap.Canvas.Handle,   // Von welcher Quelle
      PicWith * AktPic,         // Breite eines Bildes mal aktuelles Bild
      0,                        // Y-Pos der Bildquelle (ist ja immer gleich)
      SRCCOPY                   // Methode: aus Quellbild nach Ziel kopieren
      );
  end else                      // ist CheckBox1 markiert dann gedehnt zeichnen
  begin
    StretchBlt(
      PaintBox1.Canvas.Handle,  // Wohin zeichnen
      0,                        // X-Pos im Ziel
      0,                        // Y-Pos im Ziel
      PaintBox1.Width,          // so Breit wie die Paintbox
      PaintBox1.Height,         // so Hoch wie die Paintbox
      MyBitmap.Canvas.Handle,   // Von welcher Quelle
      PicWith * AktPic,         // Breite eines Bildes mal aktuelles Bild
      0,                        // Y-Pos der Bildquelle (ist ja immer gleich)
      PicWith,                  // Breite eines Einzelbildes
      PicHight,                 // Höhe eines Einzelbildes
      SRCCOPY                   // Methode: aus Quellbild nach Ziel kopieren
      );
  end;
end;
Und was davon nicht ?

Siehe auch: [oh]BitBlt, StretchBlt[/oh]

ontorius 16. Mär 2006 20:24

Re: Animation von TImages
 
kann man für MyBitmap.canvas.handle als quelle auch die bilddatei direkt angeben?
für was steht der befehl "handle"?

turboPASCAL 16. Mär 2006 21:37

Re: Animation von TImages
 
Zitat:

Zitat von ontorius
kann man für MyBitmap.canvas.handle als quelle auch die bilddatei direkt angeben?

? Das ist in diesem Fall so. MyBitmap ist nur ein Kontainer für das eigentliche Bitmap. Das hat etwas mit der VCL zu tun. die VCL kapselt ein Bitmap in eine eigene "Umgebung" zur einfachen bearbeitung.

Zitat:

Zitat von ontorius
für was steht der befehl "handle"?

Das Handle ist in diesen Fall der Device Context (DC) des Bitmaps, also ein direvkter Zeiger auf die Bitmapzeichenoberfläche.

ontorius 18. Mär 2006 11:50

Re: Animation von TImages
 
ich habe für den BitBlt-Befehl folgende Zeilen geschrieben:

Delphi-Quellcode:
var
  Form1: TForm1;
  b:integer;
  bg:TBitmap;
  const x=10;
        y=10;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender:TObject);
begin
  bg:=TBitmap.Create;
  bg.PixelFormat := pf24Bit;
end;

procedure TForm1.START1Click(Sender: TObject);
begin
  timer2.Enabled:=false;
  form1.DoubleBuffered:=true;

  bg.loadfromfile('.\pics\trasch24b.bmp');
  Bitblt(paintbox1.Canvas.Handle,0,555,1036,50,bg,0,0,srccopy);
  paintbox1.Canvas.Draw(0,555,bg);

  image2.picture.loadfromfile('.\pics\stehen_1.bmp');
  image5.Picture.LoadFromFile('.\pics\door.bmp');
end;
beim compilieren wird das Problem von "inkompatiblen Typen: 'HDC' und 'TBitmap'" angezeigt.
Mit der Paintbox und den Positionsparametern in der BitBlt-Prozedur müsste alles richtig sein, dass heißt, ich habe ein Problem mit der Variablen "bg". Muss man dafür ein bestimmtes Bild-Format haben oder sonst irgendwas beachten?


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