C# 如何应用简单的模糊效果?

C# 如何应用简单的模糊效果?,c#,xaml,visual-studio-2015,uwp,C#,Xaml,Visual Studio 2015,Uwp,我用Visual Studio编写了一个通用Windows平台应用程序,我想在主网格布局上获得一个简单的模糊效果,但我不知道如何在网格上应用GaussianBlueffect对象。我搜索了很长一段时间,阅读了微软的文档,但我不理解其中的含义。 如果有人能给我一些关于视觉效果的解释,那就太好了:) 对不起,如果我的英语不好,我是法国人。你会在网上找到很多好的样本 Visuals的想法是提供一个低级API(但没有DirectX那么低)来处理UI上的大量GPU加速效果。它允许您绘制所需内容或在渲染上创

我用Visual Studio编写了一个通用Windows平台应用程序,我想在主网格布局上获得一个简单的模糊效果,但我不知道如何在网格上应用GaussianBlueffect对象。我搜索了很长一段时间,阅读了微软的文档,但我不理解其中的含义。 如果有人能给我一些关于视觉效果的解释,那就太好了:)


对不起,如果我的英语不好,我是法国人。

你会在网上找到很多好的样本

Visuals的想法是提供一个低级API(但没有DirectX那么低)来处理UI上的大量GPU加速效果。它允许您绘制所需内容或在渲染上创建一些效果

下面是一个非常基本的示例,演示如何在栅格上应用模糊效果。(对于任何其他UIElement,其工作原理相同)

这段代码将在XAML渲染器用于渲染网格的层上添加一层。此最新层将在XAML渲染器渲染的图像顶部应用效果

页面的XAML:

<Page
x:Class="BlurSample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:BlurSample"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" x:Name="MainGrid">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <Rectangle Fill="Red" />
    <Rectangle Fill="Green" Grid.Column="1" />
    <Rectangle Fill="Blue" Grid.Row="1" Grid.Column="1" />
    <Rectangle Fill="Yellow" Grid.Row="1" />
</Grid>

更新:动画

要设置模糊效果的动画,必须执行两项操作:

  • 声明要设置动画的属性
  • 创建动画
要声明属性,您必须更改
blurEffectFactory
创建。请注意
Blur.BlurAmount
属性的声明:

// we convert the effect to a blur that can be used to paint the visual layer
var blurEffectFactory   = compositor.CreateEffectFactory(blurEffect, new[] { "Blur.BlurAmount" });
brush           = blurEffectFactory.CreateBrush();
声明后,可以在任何动画中使用
Blur.BlurAmount
属性。在这里,我宣布一个3秒的连续动画,它将模糊/取消模糊图像:

var blurAnimation       = compositor.CreateScalarKeyFrameAnimation();
blurAnimation.InsertKeyFrame(0.0f, 100.0f);
blurAnimation.InsertKeyFrame(0.5f, 0.0f);
blurAnimation.InsertKeyFrame(1.0f, 100.0f);
blurAnimation.Duration  = TimeSpan.FromSeconds(3);
blurAnimation.IterationBehavior = AnimationIterationBehavior.Forever;
brush.StartAnimation("Blur.BlurAmount", blurAnimation);

可能的副本您知道如何设置BlurAmount属性的动画吗?
var blurAnimation       = compositor.CreateScalarKeyFrameAnimation();
blurAnimation.InsertKeyFrame(0.0f, 100.0f);
blurAnimation.InsertKeyFrame(0.5f, 0.0f);
blurAnimation.InsertKeyFrame(1.0f, 100.0f);
blurAnimation.Duration  = TimeSpan.FromSeconds(3);
blurAnimation.IterationBehavior = AnimationIterationBehavior.Forever;
brush.StartAnimation("Blur.BlurAmount", blurAnimation);