CommunityToolkit / Lottie-Windows

Lottie-Windows is a library (and related tools) for rendering Lottie animations on Windows 10 and Windows 11.
https://aka.ms/lottiedocs
Other
615 stars 74 forks source link

WinUI 3: Unable to use CodeGen'ed animation #560

Open KodWhat opened 2 months ago

KodWhat commented 2 months ago

Hi, I encounter an exception while loading a codegen'ed Lottie animation. Trying to reference it in XAML and code-behind fails.

Using XAML, I get the following error and stacktrace:

The text associated with this error code could not be found.

Failed to assign to property 'Microsoft.UI.Xaml.Controls.AnimatedVisualPlayer.Source'. [Line: 13 Position: 5]

   at WinRT.ExceptionHelpers.<ThrowExceptionForHR>g__Throw|39_0(Int32 hr)

Using the code-behind method seems to give a more detailed error:

The type initializer for '_ICanvasPathBuilderFactory' threw an exception.

When trying to use a json file with LottieVisualSource, the same type of exception seems to happen in the background

I've tried with multiple animations, that was working in UWP. (Microsoft.Toolkit.Uwp.UI.Lottie 7.1.1)

Here's a repro project, containing the original json and codegen class: TestLottieWinUI3.zip

WinAppSDK version: 1.5.240428000 Lottie version: 8.0.280225

getrou commented 2 months ago

Looks like your app is missing a package reference to Win2D! Just add Microsoft.Graphics.Canvas as a nuget package reference and you should be good to go.

KodWhat commented 2 months ago

Can't find a Microsoft.Graphics.Canvas on Nuget. There's a Microsoft.Graphics.Win2D, but the version 1.0.4 is installed with CommunityToolkit.WinUI.Lottie, so it should be there.

image

getrou commented 2 months ago

Yep, that's the one! Sorry I mis-spoke. Microsoft.Graphics.Canvas is the binary name (oops) while the package is Microsoft.Graphics.Win2D.

Hm, try installing it and updating to version 1.2.0, your repro works for me after I do that.

KodWhat commented 1 month ago

I've just tried installing the 1.0.4 version explicitly and it worked... That's quite strange that Lottie references the package but doesn't seem to be able to use it. Upgrading to 1.2.0 also works.