AnimationImage.WPF
1.0.7
dotnet add package AnimationImage.WPF --version 1.0.7
NuGet\Install-Package AnimationImage.WPF -Version 1.0.7
<PackageReference Include="AnimationImage.WPF" Version="1.0.7" />
<PackageVersion Include="AnimationImage.WPF" Version="1.0.7" />
<PackageReference Include="AnimationImage.WPF" />
paket add AnimationImage.WPF --version 1.0.7
#r "nuget: AnimationImage.WPF, 1.0.7"
#:package AnimationImage.WPF@1.0.7
#addin nuget:?package=AnimationImage.WPF&version=1.0.7
#tool nuget:?package=AnimationImage.WPF&version=1.0.7
AnimationImage
基于 SkiaSharp 的 WPF & AvaloniaUI 极简动图播放方案
🚀 简介
AnimationImage支持播放 Lottie(JSON)、GIF 和 WebP 格式,相比现有方案,具有更高的帧率、更佳的渲染性能以及更低的内存占用。
🚝使用方法
引入命名空间:xmlns:ani="https://github.com/LazyCuteLion/AnimationImage"
WPF:
<Image ani:AnimationBehavior.AnimatableBitmap="[path]"
ani:AnimationBehavior.ForceFPS="144"
ani:AnimationBehavior.RepeatBehavior="Forever" />
<Image Source="{ani:AnimatableBitmap '[path]',PreloadCount=PreloadOptions.Full}" />
<Image Source="{ani:AnimatableBitmap '[path]',RenderScale=0.5}" />
<Rectangle Fill="{ani:AnimatableBitmap '[path]'}" />
<Border Background="{ani:AnimatableBitmap '[path]'}" />
<Image ani:AnimationBehavior.AutoStart="false" …… />
<Slider Maximum="{Binding ElementName=img, Path=(ani:AnimationBehavior.AnimatableBitmap).Metadata.Duration}"
Value="{Binding ElementName=img, Path=(ani:AnimationBehavior.AnimationTime), Mode=TwoWay}" />
<StackPanel DataContext="{Binding ElementName=img, Path=(ani:AnimationBehavior.AnimatableBitmap)}"
Orientation="Horizontal">
<Button Command="{Binding BeginCommand, Mode=OneTime}"
Content="Play" />
<Button Margin="10,0"
Command="{Binding PauseCommand, Mode=OneTime}"
Content="Pause" />
<Button Command="{Binding StopCommand, Mode=OneTime}"
Content="Stop" />
</StackPanel>
Avalonia(用法与WPF基本相同):
<Image ani:AnimationBehavior.AnimatableBitmap="[path]"
ani:AnimationBehavior.LoopCount="-1" />
public partial class App : Application
{
public override void Initialize()
{
AnimatableBitmapOptions.Default = new AnimatableBitmapOptions()
{
UseGPU = false,//禁用显卡加速
PreloadCount = PreloadOptions.Disable,//禁用预加载和缓存
};
AvaloniaXamlLoader.Load(this);
}
}
✈️更新日志
v1.0.7
🐛 修复:修复Lottie文件初始化大小不准确以及帧率异常的问题。(VS智能补全代码害死人,稍不留神就出BUG)
🚨 重大变更:统一命名空间xmlns:ani="https://github.com/LazyCuteLion/AnimationImage"。
v1.0.6
🧨 功能回归:全新的GIF/WebP 预加载机制:若解码速度不能满足帧率要求,则自动预加载,然后开启后台线程持续解码并缓存。可通过AnimatableBitmapOptions.Default来调整这一默认行为。
v1.0.5
👏 重大变更:引入Vortice.Direct3D12,为Lottie提供显卡加速功能,对于复杂场景的动画有很大的提升!默认已开启,也可以通过UseGPU关闭。
v1.0.4
🐛 修复:修复Lottie文件不能自动播放的问题。
v1.0.3
✨ 优化:对于Lottie文件,增加了设置渲染比例选项。
🚨 重大变更:预加载功能有较大缺陷,暂时取消。
v1.0.2
✨ 优化:AI生成的代码不是很靠谱,重新优化预加载算法。
v1.0.1
🐛 修复:修复命令状态没有即时更新的问题。
v1.0.0
🚀 发布:初始版本正式发布。
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-windows7.0 is compatible. net9.0-windows was computed. net10.0-windows was computed. |
-
net8.0-windows7.0
- SkiaSharp (>= 3.119.2)
- SkiaSharp.Skottie (>= 3.119.2)
- Vortice.Direct3D12 (>= 3.8.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.