C# UWP应用程序使用DX合成器实时模糊背景
因此,UWP合成支持已经推出一段时间了,我正在寻找一种方法来实时模糊元素(在元素移动或加载时实时模糊,而不是静态快照)。到目前为止,我一直在寻找有关stackoverflow和google的一些答案,这些答案引导我使用和Win2D。它们都不足以提供实时模糊支持。我知道在合成中实时模糊是可能的,因为我看过模糊视频的演示,还有一个过时的项目,它允许你在8.1应用程序上使用DX模糊几乎任何东西 我不想使用C# UWP应用程序使用DX合成器实时模糊背景,c#,directx,win-universal-app,composition,uwp-xaml,C#,Directx,Win Universal App,Composition,Uwp Xaml,因此,UWP合成支持已经推出一段时间了,我正在寻找一种方法来实时模糊元素(在元素移动或加载时实时模糊,而不是静态快照)。到目前为止,我一直在寻找有关stackoverflow和google的一些答案,这些答案引导我使用和Win2D。它们都不足以提供实时模糊支持。我知道在合成中实时模糊是可能的,因为我看过模糊视频的演示,还有一个过时的项目,它允许你在8.1应用程序上使用DX模糊几乎任何东西 我不想使用RenderTargetBitmap(想保持我的UI线程空闲)。我如何仅使用合成API来实现这一点
RenderTargetBitmap
(想保持我的UI线程空闲)。我如何仅使用合成API来实现这一点:
ContainerVisual rootVisual = GetVisual(this.Content);
Compositor compositor = rootVisual.Compositor;
// what next?
非常感谢您的帮助:)注意:这些功能(模糊和背景画笔)需要Windows 10的周年更新。您目前可以通过Windows Insider程序预览SDK 先决条件
GaussianBlurEffect blurEffect = new GaussianBlurEffect()
{
Name = "Blur",
BlurAmount = 0.0f, // You can place your blur amount here.
BorderMode = EffectBorderMode.Hard,
Optimization = EffectOptimization.Balanced,
Source = new CompositionEffectSourceParameter("source")
};
下一步是创建效果工厂:
var effectFactory = compositor.CreateEffectFactory(blurEffect, new[] {"Blur.BlurAmount"});
第二个参数不是必需的,但如果提供该参数,则可以在编译效果后设置命名属性的动画或更改命名属性。在这种情况下,我们现在可以更改或设置模糊量的动画。如果要重用模糊效果工厂来创建多个模糊效果笔刷,但使它们都使用不同的模糊量,则此选项非常有用
下一步取决于您希望效果如何工作
单个曲面
如果希望它仅应用于单个曲面,请执行以下操作:
var effectBrush = effectFactory.CreateBrush();
effectBrush.SetSourceParameter("source", someOtherSurfaceBrush);
visual.Brush = effectBrush;
var effectBrush = effectFactory.CreateBrush();
effectBrush.SetSourceParameter("source", compositor.CreateBackdropBrush());
visual.Brush = effectBrush;
背景
但是,如果要动态模糊给定视觉效果背后的大量内容,可以执行以下操作:
var effectBrush = effectFactory.CreateBrush();
effectBrush.SetSourceParameter("source", someOtherSurfaceBrush);
visual.Brush = effectBrush;
var effectBrush = effectFactory.CreateBrush();
effectBrush.SetSourceParameter("source", compositor.CreateBackdropBrush());
visual.Brush = effectBrush;
请注意,这看起来非常类似于第一种方法,但不是给它一个曲面笔刷,而是给它一个BackdropBrush。这将实时获取视频背后的内容,并将其输入到效果源中。在这种情况下,任何“后面”的视觉将变得模糊
性能
如果只模糊单个图像,则最好模糊单个曲面。你应该试着只在你真正需要的时候使用BackdropBrush
给我看更多强>
要看更多,请前往我们的网站!我们已经创建了一个自定义XAML控件,可以帮助您解决问题,您可以看到它的实际操作。你也可以看到//build谈话。我会等到//build(明天开始)-我怀疑那里会宣布一些有助于在UWP中模糊的东西。是的,他们可能会,但我不在参加build的富人之列,所以可能会有人分享它,至少是其中的一部分,channel9将主持接下来的所有会议:)已经一个接一个地进行了。到目前为止还没有消息。我真的很想看看这些示例,但我无法在Visual Studio中加载任何项目。我有最新版本的VS2015和更新2,它不断弹出消息说,一个或多个项目需要平台SDK,但我的系统(10.0.14332.0)上没有安装。在消息对话框中有一个安装SDK的链接,但当我单击该链接时,它将指向Microsoft官方主页。erotavlas,您是否查看了此wiki页面上的“已知问题”部分:?我会将你系统的Windows版本与你安装的SDK进行比较,确保它们匹配。此外,您可能需要打开csproj文件并编辑目标版本号和最小版本号,以匹配现有版本号。