A library for displaying animated GIFs in WPF applications on .NET Framework, .NET Core, and .NET 5+.
XamlAnimatedGif is a library for displaying animated GIF images in WPF applications. It solves the problem of WPF's lack of native animated GIF support by providing a lightweight, memory-efficient implementation that works across modern .NET versions.
WPF developers who need to incorporate animated GIFs into their desktop applications without excessive memory usage.
Developers choose XamlAnimatedGif for its memory efficiency compared to alternatives, its simplicity of integration via XAML, and its support for modern .NET platforms while handling common GIF features reliably.
A simple library to display animated GIF images in WPF apps (.NET Framework 4.5, .NET Core 3.1, .NET 5.0)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses a WriteableBitmap to render frames just-in-time, keeping only one frame in memory at a time, which significantly reduces memory overhead compared to older libraries like WpfAnimatedGif.
Supports modern .NET versions including .NET Framework 4.5, .NET Core 3.1, and .NET 5.0, ensuring it works across current WPF development environments without platform lock-in.
Handles advanced GIF features like transparency, interlaced images, frame disposal methods, delays, and repeat counts, making it reliable for most common use cases in WPF.
Implemented as an attached property, allowing developers to add animated GIFs with minimal code changes, such as using <Image gif:AnimationBehavior.SourceUri="/Images/animated.gif" /> in XAML.
The CPU-intensive just-in-time rendering can lead to slower performance for very large or high-resolution GIFs, as acknowledged in the README, making it less suitable for resource-heavy applications.
Version 2.0.0 dropped support for older XAML platforms like Silverlight and UWP, forcing users on obsolete systems to rely on outdated, unmaintained versions of the library.
Only basic pause and resume functions are available; advanced features like seeking to specific frames or manual navigation are not implemented, limiting interactivity in some scenarios.