Gif zapętlający się w picturebox'ie

0

Witam,
Mam picturebox'a, który wyświetla animowanego gifa. Chciałbym, żeby animował się tylko raz, po czym picturebox wyświetlał jego ostatnią klatkę. Gif jest zrobiony przeze mnie w Gimpie, gdzie ustawiłem, że ma się animować raz, a mimo to w programie robi to w nieskończoność.
Próbowałem zrobić nowy wątek, w którym program sprawdzałby, czy wyświetlana przez picturebox klatka nie jest ostatnią. Jeśli tak, to pauzowałby animację. Problem w tym, że nie bardzo wiem jak to zrobić. Czytałem o klasie ImageAnimator, ale nie wiem jak połączyć ją z picturebox'em.

0

Spróbowałem tak:

System.Drawing.ImageAnimator.StopAnimate(map.Image, OnFrameChanged);

map to picturebox. Nie rozumiem jednak sensu istnienia drugiego parametru. OnFrameChanged to u mnie funkcja pusta.

0

Udało mi się zastopować gifa. Jakby ktoś potrzebował:

picturebox.Enabled = false;

Jak widać, wystarczy go wyłączyć.
Teraz potrzebuję sprawdzić numer aktualnej klatki i ilość klatek w gifie. Jakieś pomysły?

0

Wszystkie klatki w gifie:

 FrameDimension dimension;
 dimension = new FrameDimension(this.pictureBox1.Image.FrameDimensionsList[0]);
 int frameCount = this.pictureBox1.Image.GetFrameCount(dimension);

Niestety nie mam pojęcia jakby uzyskać aktualną klatkę.

0

Przepraszam za double, ale nie mam jeszcze konta.

To pokaż kod bo wrzuciłem na formę picturebox'a, do niego GIFa i dokładnie ten sam kod i pokazuje poprawnie.

0

@gogolon jeżeli masz Photoshopa to można zrobić takiego gifa z animacją jednokrotną i po problemie. Zakładka Timeline (ustawiasz czas wyświetlenia każdej warstwy i na koniec "ONCE" lub "FOREVER"). Zrobiłem Ci screena:

0

Dzięki za odpowiedź. Przy tworzeniu gifa korzystałem z Gimpa. Zaznaczyłem, że ma się animować tylko raz. Kiedy odtwarzam go w przeglądarce, wszystko działa jak powinno, w programie już nie :/
Potrzebuję jakiegoś pola lub metody, która zwróci mi aktualną klatkę wyświetlanej animacji. Gdybym miał te dane, skończyłbym warunek nie pozwalający na kolejne odtworzenie tego samego obrazka...

1

to powinno normalnie działać - oprócz ustawienia że GIF ma się uruchamiać raz możesz ustawić czas wyświetlania ostatniej klatki na nieskończoność lub przynajmniej kilka lat
albo zapisz w innym programie

osobiście zrezygnowałbym z gifów - możesz zrobić obrazek który będzie składał się z klatek obok siebie i wyświetlać w danym czasie określony obszar - w ten sposób masz pełną kontrolę nad wyświetlaniem - możesz w prosty sposób zmieniać czas wyświetlania, pauzować, stopować i zapętlać - tak na przykład działają emotki na facebooku. Oprócz tego obrazek może być wtedy w .png więc może zajmować mniej i mieć większą paletę barw

1 użytkowników online, w tym zalogowanych: 0, gości: 1