我有一个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();
答案 0 :(得分:2)
此特定代码未按预期呈现的原因是HostBackdrop内置了GaussianBlurEffect。由于动态模糊会产生性能问题,因此全屏模式,活动窗口或低功耗模式(等等)的某些“后退”也会内置于画笔中,并且会在这些情况下创建与透明模糊窗口相对的纯色。您可以创建一个交叉渐变动画来处理这些透明到实体的过渡,这样它们看起来就不那么刺耳了。
使用HostBackdropBrush的示例为here。
BackdropBrush类似于HostBackdropBrush,但不受限制,因为它只对应用程序本身绘制的内容进行采样。如果您不希望使用这些效果进行大量自定义,XAML支持acrylic,它更易于使用,并为开发人员处理回退过渡动画等内容。