如何在 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 包装器)。 ios、android、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 动画?的主要内容,如果未能解决你的问题,请参考以下文章
使用 MvvmCross 时如何在 WPF App.xaml 中设置资源? (MaterialDesignInXamlToolkit)