如何在 WPF / XAML 项目中使用 Rive 动画?

Posted

技术标签:

【中文标题】如何在 WPF / XAML 项目中使用 Rive 动画?【英文标题】:How can I use Rive animations in a WPF / XAML project? 【发布时间】:2022-01-07 00:16:18 【问题描述】:

我有一个 *.rive 文件,我想在我的 WPF 应用程序中使用它,就像加载微调器一样。

有任何方法可以使用图像、媒体元素等在 WPF 中使用 rive 文件。

需要转成gif吗?

【问题讨论】:

首先,请告诉我们RIV 文件到底是什么。我在任何主要的文件类型数据库中都找不到任何提及或描述。例如fileinfo.com/search Rive 是 Rive Inc. 的实时交互式设计和动画工具。使用 Rive 编辑器创建基于矢量的运动图形,以响应不同的状态和用户输入。 Rive 允许您通过动画混合、插值和反向运动学创建高级时间线动画。使用状态机在动画之间转换。当我们将其导出为 .riv 时,它会生成一个带有此扩展名的文件。更多...(defold.com/extension-rive) rive 不是riv 如果它是基于矢量的,您可以使用路径和形状以及情节提要动画在 WPF 中重新创建它。我不知道此文件类型的 nuget 包或本机支持。 @Bizhan 是的,这是我在阅读 Rive 时的第一个想法,我想知道如果 Rive 只是又一个矢量动画软件,那么它作为一个品牌是如何工具,然后我阅读了他们的技术文档,发现他们的真正价值在于向宿主程序公开结构化动画 - 这样您就可以轻松用更少的手工操作完成things like this。 【参考方案1】:

简答:你不能

Rive 不仅仅是一个动画工具,而是一个动画框架,需要为不同类型的主机专门编写runtime。 Rive's documentation says they only have first-party support 为: Web(和第一方 React 包装器)。 iosandroid、Flutter、Tizen 反应原生 “C++” 请注意缺少 WPF、XAML、WinUI、UWP、Jupiter、Silverlight、WinForms 等。 微软在 2021 年的桌面开发者故事肯定是有趣,不是吗? 自 Windows 7 以来,MS 一直没有清晰一致的桌面故事,这令人沮丧,and still awful。

我注意到“C++”不是一个平台,只是一种语言,所以他们这样描述它很奇怪。无论如何,their C++ runtime 附带了一个 renderer for Skia,它并没有多大用处

长答案:你可以,如果你想努力的话

    克隆并构建他们的 C++ 运行时。 用您自己创建的新渲染器替换 Skia 渲染器,以某种方式渲染到 WPF。 您可以在 WPF 中托管 Skia,但它是一个不透明的表面:WPF 不会直接渲染 Rive 动画的结构和内容,这会导致效率低下。 另外,我认为 WPF仍然停留在 DirectX 9 上,Rive 中的某些功能可能会受益于 DX12。 剩下的就是读者的练习。

【讨论】:

以上是关于如何在 WPF / XAML 项目中使用 Rive 动画?的主要内容,如果未能解决你的问题,请参考以下文章

如何在flutter中使用rive的状态机?

使用 MvvmCross 时如何在 WPF App.xaml 中设置资源? (MaterialDesignInXamlToolkit)

如何在 WPF 窗口上加载 Xaml 文件?

WPF中的xaml引用不同项目间资源的问题

如何在 Visual Studio 2019 中为 C# WPF 切换 XAML 中的行注释

WPF后台如何获得前台XAML中对象