UWPAppUsingDXCompositortoBlurBackgroundinRealTime所以UWPComposition支持已经有一段时间了,我正在寻找一种模糊的方法实时元素(移动或加载实时模糊而不是静态快照)。到目前为止,我一直在查看关于stackoverflow的一些答案,谷歌引导我找到LumiaImagingSDK示例和Win2D。它们都不足以支持实时模糊。我知道可以在合成中实时模糊,因为我看过模糊视频的演示,并且有一个过时的项目XAMLFx,它允许您在8.1应用程序上使用DX模糊几乎所有内容。我不想使用RenderTargetBitmap(想让我的UI线程保持空闲)。如何仅使用组合API来做到这一点:ContainerVisualrootVisual=GetVisual(this.Content);合成器compositor=rootVisual.Compositor;//接下来是什么?非常感谢任何帮助:)注意:这些功能(模糊和背景画笔)需要Windows10周年更新。您目前可以通过WindowsInsiderProgramPrerequisitesTargetingWindows10AnniversaryUpdate预览SDK对VisualLayer和VisualTree工作原理的基本了解。你可以在这里找到更多。此外,您可以查看我在此处编写的要点,这是一种在XAML应用程序中使用CompositionAPI启动和运行的快速方法。它还使用效果进行演示。不仅如此,它还包括使用CompositionAPI加载图像(使用我编写的一个包)。入门CompositionAPI中有两种方法可以去除模糊效果。一种是适用于单个表面的法线效果。另一种是将其用作“背景”画笔,将所有内容置于其后并使其模糊。要使用模糊效果,您需要使用Win2D中的GaussianBlurEffect定义。它是这样的:GaussianBlurEffectblurEffect=newGaussianBlurEffect(){Name="Blur",BlurAmount=0.0f,//你可以在这里放置你的模糊量。BorderMode=EffectBorderMode.Hard,Optimization=EffectOptimization.Balanced,Source=newCompositionParameff("source")};下一步是创建效果工厂:vareffectFactory=compositor.CreateEffectFactory(blurEffect,new[]{"Blur.BlurAmount"});第二个参数不是必需的,但提供它允许您在编译效果后设置动画或更改命名属性。在这种情况下,我们现在可以更改BlurAmount或为其设置动画。如果您想重复使用模糊工厂来创建多个模糊画笔,但它们都使用不同的BlurAmounts,这将很有用。下一步取决于您希望效果如何工作。单面如果你希望它只适用于一个单一的表面,你会这样做:vareffectBrush=effectFactory.CreateBrush();effectBrush.SetSourceParameter("source",someOtherSurfaceBrush);visual.Brush=effectBrush;给定视觉背后的大量运动模糊,您可以这样做:vareffectBrush=effectFactory.CreateBrush();effectBrush.SetSourceParameter("source",compositor.CreateBackdropBrush());visual.Brush=effectBrush;请注意,这看起来与第一种方法非常相似,但不是给它一个表面画笔,而是给它一个BackdropBrush。这将实时显示视觉背后的内容并将其输入效果源。在这种情况下,视线“背后”的任何东西都会变得模糊。性能如果您只是模糊单个图像,最好模糊单个表面。您应该仅在确实需要时才尝试使用BackdropBrush。告诉我更多!要了解更多信息,请访问我们的GitHub页面!我们创建了一个自定义XAML控件,可以在此处为您提供帮助,您可以在此处查看。您还可以在此处查看//build讨论。以上就是C#学习教程:使用DXCompositor的UWPApp实时虚化背景。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
