在 WPF 中模糊背景

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/27884003/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 12:50:14  来源:igfitidea点击:

Blur background in WPF

c#.netwpfeffects

提问by migueladanrm

I am trying to create a blur effect in WPF, but I want to blur the content located behind the control (such as a Grid), I do not intend to blur the contents of the Grid.

我正在尝试在 WPF 中创建模糊效果,但我想模糊控件后面的内容(例如网格),我不打算模糊网格的内容。

I want to do something like this image.

我想做这样的事情。

enter image description here

在此处输入图片说明

采纳答案by aloisdg moving to codidact.com

If you are looking for something like this:

如果你正在寻找这样的东西:

blur cherries

模糊樱桃

The answer is to use a BitmapEffect:

答案是使用一个BitmapEffect

<Image Source="http://www.pingminghealth.com/wp-content/uploads/2010/12/cherries.jpg" Stretch="UniformToFill">
    <Image.BitmapEffect>
        <BlurBitmapEffect Radius="20" />
    </Image.BitmapEffect>
</Image>

You can find a tutorial about it on msdn: How to Apply a Blur Effect to a Visual.

您可以在 msdn 上找到有关它的教程:How to Apply a Blur Effect to a Visual

回答by J?rg Flechsig

Just in case, someone is still looking for a solution in 2018, something like this worked for me: BlurryControls.BlurryUserControl.cs

以防万一,有人仍在寻找 2018 年的解决方案,这样的事情对我有用BlurryControls.BlurryUserControl.cs

回答by Dhru 'soni

<Rectangle>  
    <Rectangle.Effect>  
        <BlurEffect Radius="{DynamicResource BlurRadius}"/>  
    </Rectangle.Effect>  
    <Rectangle.Fill>  
        <VisualBrush  
ViewboxUnits="Absolute"  
Viewbox="{Binding RenderTransform.Children[3],  
        Converter={StaticResource TranslateTransformToRectViewboxVisualBrushConverter},  
        RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}},  
        UpdateSourceTrigger=PropertyChanged}"  
        AlignmentX="Left" AlignmentY="Top"  
    Visual="{Binding ElementName=BackgroundContainer}" Stretch="None">  
            <VisualBrush.Transform>  
                <TranslateTransform X="0" />  
            </VisualBrush.Transform>  
        </VisualBrush>  
    </Rectangle.Fill>  
</Rectangle>