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