微软最近公布了他们新的“流利”设计语言,其中一部分是“亚克力”材料。此效果使元素透明并模糊背景。它既可以应用于窗口,使底层窗口的一部分发光(背景丙烯酸),也可以应用于窗口中的单个元素,以便其他控件发光(应用内丙烯酸)。它在概念上和视觉上与 macOS 上的活力非常相似。
它在 XAML 中作为特殊的 Brush 实现,但我想知道有没有办法在常规 Win32 应用程序中使用它(背景丙烯酸)?该效果看起来与应用于开始菜单和任务栏(由SetWindowCompositionAttribute处理)的模糊非常相似,这让我相信它可能可以通过类似的标志激活。
一个子问题:我想知道它是如何实现的?它只是您可以在窗口上设置的标志,然后在 DWM 中应用(如 SetWindowCompositionAttribute,或如 Vista 和 7 中的 Aero Glass)?还是 UWP 对 DWM 有某种控制,并且可以设置着色器来控制它的渲染方式?在 Vista 下,当 DWM 第一次被引入时,它与 WPF 有共同的代码,并且它实际上共享(类似 DirectX 的)缓冲区和场景图,所以这样的技巧是可能的。magifier 实用程序可以像矢量图像一样清晰地放大 WPF 应用程序,但该功能后来丢失了。MS 在该页面上呈现“丙烯酸”的方式(作为不同的图层,并作为 XAML 画笔实现)让我认为您必须以某种方式将图层注入 DWM 场景图中,这将使其更难或无法使用来自 Win32。