在桌面应用中使用视觉层

现在可以在非 UWP 桌面应用程序中使用Windows 运行时 API 来增强WPF、Windows 窗体和 C++ Win32 应用程序的外观、感觉和功能,并利用只能通过 UWP 使用的最新Windows UI 功能。

对于许多方案,可以使用 XAML 岛 向应用添加新式 XAML 控件。 但是,当需要创建自定义体验(超出内置控件)时,可以访问视觉层 API。

视觉层为图形、效果和动画提供高性能、保留模式 API。 它是跨 Windows 设备 UI 的基础。 UWP XAML 控件是基于视觉层构建的,它支持 Fluent Design System 的多方面特性,例如光照、深度、运动、材料和缩放。

显示使用视觉层创建的用户界面的简短视频。

使用视觉层创建的用户界面

在任何Windows应用中创建具有视觉吸引力的用户界面

借助视觉层,可以使用自定义绘制内容(视觉对象)的轻型组合,以及对应用程序中这些对象应用强大的动画、效果和操作,从而创建引人入胜的体验。 视觉层不会替换任何现有的 UI 框架;相反,这是对这些框架的宝贵补充。

可以使用视觉层为应用程序提供独特的外观,并建立一个标识来将其与其他应用程序分开。 它还支持 Fluent Design 原则,这些原则旨在使应用程序更易于使用,从而吸引更多的用户参与度。 例如,可以使用它创建视觉提示和动画屏幕切换,以显示屏幕上项之间的关系。

视觉层功能

刷子

使用合成画笔 ,可以使用纯色、渐变、图像、视频、复杂效果等绘制 UI 对象。

使用材料创建者创建的鸡蛋

使用 Material Creator 演示应用创建的鸡蛋.

影响

合成效果 包括光线、阴影和筛选效果列表。 它们可以进行动画处理、自定义和链接,然后直接应用于视觉对象。 SceneLightingEffect 可与合成照明相结合,以创建气氛、深度和材料。

灯和材料

Windows UI 组成示例库中演示的光源和材料。

动画

合成动画 直接在合成器进程中运行,独立于 UI 线程。 这可确保平滑度和缩放性,因此可以运行大量并发显式动画。 除了熟悉的关键帧动画来推动属性更改随时间推移,还可以使用表达式在不同属性(包括用户输入)之间设置数学关系。 输入驱动动画使你能够创建动态且流畅地响应用户输入的 UI,这可能会导致用户参与度更高。

使用视觉层创建的另一个用户界面的简短视频。

动画效果在 Windows UI 合成示例库 中进行了演示。

保留现有代码库并增量采用

现有应用程序中的代码表示你不想失去的重大投资。 你可以迁移内容 以使用视觉层,并将 UI 的其余部分保留在其现有框架中。 这意味着你可以对应用程序 UI 进行重大更新和增强,而无需对现有代码库进行大量更改。

示例和教程

了解如何通过试验示例在应用程序中使用视觉层。 这些示例和教程可帮助你开始使用视觉层,并展示功能的工作原理。

Win32

Windows 窗体

WPF

Limitations

虽然许多视觉层功能在桌面应用程序中托管时的工作方式与在 UWP 应用中相同,但某些功能确实存在限制。 以下是需要注意的一些限制:

  • 效果链依赖于 Win2D 获取效果说明。 桌面应用程序中不支持 Win2D NuGet 包,因此需要从 source code 重新编译它。
  • 要进行命中测试,您需要自行遍历视觉树来计算边界。 这与 UWP 中的视觉层相同,但在这种情况下,没有 XAML 元素可以轻松绑定以进行命中测试。
  • 视觉层没有用于呈现文本的基元。
  • 当两种不同的 UI 技术一起使用(如WPF和视觉层)时,它们都负责在屏幕上绘制自己的像素,并且不能共享像素。 因此,视觉层内容始终呈现在其他 UI 内容之上。 这被称为 空域 问题。您可能需要进行额外的编码和测试,以确保视觉层内容会随着主机 UI 调整大小,并且不会遮挡或覆盖其他内容。
  • 在桌面应用程序中托管的内容不会自动按 DPI 调整或缩放。 为了确保您的内容能够适应 DPI 的变化,可能需要采取额外的步骤。 (有关详细信息,请参阅特定于平台的教程。

其他资源

API 参考