CompositionBackdropBrush与全屏应用程序

时间:2017-12-15 16:44:58

标签: uwp

我有一个UWP应用程序(目标是16299,如果重要的话)全屏,并使用CompositionBackdropBrush作为应用程序的背景。这会导致CompositionBackdropBrush无法运行(它只显示纯白色)。有没有办法使这项工作?

如果我不要求应用程序全屏显示,则可以正常使用。

另外,我注意到只要应用程序被暂停,CompositionBackdropBrush就会变白。这是某种安全功能吗?

这里是使用全屏的代码,来自App.xaml.cs:

var view = ApplicationView.GetForCurrentView();
view.TryEnterFullScreenMode();
view.FullScreenSystemOverlayMode = FullScreenSystemOverlayMode.Minimal;
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.FullScreen;

这里是应用合成画笔的代码(BackgroundGrid只是一个全尺寸网格): 构造:

_compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;

装载的:

_hostSprite = _compositor.CreateSpriteVisual();
_hostSprite.Size = new Vector2((float)BackgroundGrid.ActualWidth, (float)BackgroundGrid.ActualHeight);

ElementCompositionPreview.SetElementChildVisual(BackgroundGrid, _hostSprite);

_hostSprite.Brush = _compositor.CreateHostBackdropBrush();

1 个答案:

答案 0 :(得分:2)

此特定代码未按预期呈现的原因是HostBackdrop内置了GaussianBlurEffect。由于动态模糊会产生性能问题,因此全屏模式,活动窗口或低功耗模式(等等)的某些“后退”也会内置于画笔中,并且会在这些情况下创建与透明模糊窗口相对的纯色。您可以创建一个交叉渐变动画来处理这些透明到实体的过渡,这样它们看起来就不那么刺耳了。

使用HostBackdropBrush的示例为here

BackdropBrush类似于HostBackdropBrush,但不受限制,因为它只对应用程序本身绘制的内容进行采样。如果您不希望使用这些效果进行大量自定义,XAML支持acrylic,它更易于使用,并为开发人员处理回退过渡动画等内容。