myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grafik und Sound » Animiertes GIF nur einmal abspielen lassen ?!
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Animiertes GIF nur einmal abspielen lassen ?!

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
RiDDem RiDDem ist männlich
myCSharp.de-Mitglied

Dabei seit: 20.12.2006
Beiträge: 7


RiDDem ist offline

Animiertes GIF nur einmal abspielen lassen ?!

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich möchte ein animiertes GIF einmalig abspielen lassen, sodass das Endbild der Animation stehen bleibt.

Das Problem:

Das GIF-Bild wird bei abspielen im Internet Explorer und beim normalen öffnen in Windows auch nur einmalig abgespielt; sobald ich es jedoch in einer pictureBox lade und das Projekt kompiliere fängt die Animation immer wieder von vorne an ?!

Hat jemand eine Idee zur Lösung des Problems?

Vielen Dank im Voraus,
Riddem
13.05.2009 17:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
DerHulk DerHulk ist männlich
myCSharp.de-Mitglied

avatar-1789.png


Dabei seit: 23.12.2005
Beiträge: 270
Entwicklungsumgebung: VisualStudio
Herkunft: Koblenz


DerHulk ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo RiDDem,

habe zwar keine direkte Lösung für dich aber ich bin heute zufällig über dieses Programm gestossen:

 http://stevedunns.googlepages.com/conver...ifstospritemaps

Hier liegt der Quellcode ja vor und das Programm muss die Bilder ja auch nur einmal verarbeiten/abspielen daher könnte dir das evtl. helfen.

mfg Hulk
17.05.2009 18:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MartinK
myCSharp.de-Mitglied

Dabei seit: 14.10.2008
Beiträge: 5


MartinK ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Evt. kannst du das Problem auch umgehen, wenn du die komplette Ablaufzeit der Gif-Animation erfasst und vom letzten Bild der Animation ein Einzelbild erstellst (über ein prof. Zeichenprogramm, oder Desktop-Screenshot).

In der Programmierung lässt du die Gif-Animation in der Picture-Box über die Zeit, welche eine vollständige Abfolge benötigt, laufen (Timer). Im Abschluss ersetzt du das Ani-Gif durch das jetzte Einzelbild.

Gruß
Martin
18.05.2009 13:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 11 Jahre.
TigerCrow TigerCrow ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.01.2017
Beiträge: 85


TigerCrow ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Es ist schon etwas her :(

Habe für Dein Problem dies im Netz gefunden:

C#-Code:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Collections.Generic;
using System.IO;

public class AnimatedGif {
  private List<AnimatedGifFrame> mImages = new List<AnimatedGifFrame>();
  PropertyItem mTimes;
  public AnimatedGif(string path) {
    Image img = Image.FromFile(path);
    int frames = img.GetFrameCount(FrameDimension.Time);
    if (frames <= 1) throw new ArgumentException("Image not animated");
    byte[] times = img.GetPropertyItem(0x5100).Value;
    int frame = 0;
    for (; ; ) {
      int dur = BitConverter.ToInt32(times, 4 * frame);
      mImages.Add(new AnimatedGifFrame(new Bitmap(img), dur));
      if (++frame >= frames) break;
      img.SelectActiveFrame(FrameDimension.Time, frame);
    }
    img.Dispose();
  }
  public List<AnimatedGifFrame> Images { get { return mImages; } }
}

public class AnimatedGifFrame {
  private int mDuration;
  private Image mImage;
  internal AnimatedGifFrame(Image img, int duration) {
    mImage = img; mDuration = duration;
  }
  public Image Image { get { return mImage; } }
  public int Duration { get { return mDuration; } }
}

Vielleicht ist das auch was für andere die sowas suchen

Lieben Gruß
TigerCrow
07.01.2021 06:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 11 Jahre.
Antwort erstellen


© Copyright 2003-2021 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 23.01.2021 16:10