图像“渐变模糊”

时间:2011-06-02 06:51:26

标签: c# wpf image blur

在我的应用程序中,我需要对图像应用模糊滤镜。但是,效果应该越强,像素越远离用户可以在图像中自由绘制的线条。

让我们假设用户绘制的线条正好在中间水平分割图像。然后沿着这条线,渐变的效果应该是0%,从这条线的上下一半,效果应该是50%等。(如果您的机器上有Picasa,对椭圆渐变有类似的效果)

现在我想我可能会尝试以下(我还没有,到目前为止 - 我只是在这里收集想法):我可能会创建一个100%模糊的图像版本,并使用alpha将其与原始图像相结合-面具。这个alpha-mask将使用简单的黑/白线性渐变创建。

你认为这可行吗?是否可以直接使用过滤器实现其他实现?

1 个答案:

答案 0 :(得分:7)

是的,你想到的方法会很好用。这是两个图像,左边是正常图像,右边是两个图像,两个图像在底部是正常的,顶部是模糊的,顶部使用不透明蒙版将两者混合在一起:

<UniformGrid Columns="2">
    <Image Source="http://thecybershadow.net/misc/stackoverflow.png"/>
    <Grid>
        <Image Source="http://thecybershadow.net/misc/stackoverflow.png"/>
        <Image Source="http://thecybershadow.net/misc/stackoverflow.png">
            <Image.Effect>
                <BlurEffect Radius="5"/>
            </Image.Effect>
            <Image.OpacityMask>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                    <GradientStop Color="Transparent" Offset="0"/>
                    <GradientStop Color="White" Offset="1"/>
                </LinearGradientBrush>
            </Image.OpacityMask>
        </Image>
    </Grid>
</UniformGrid>

这就是它的样子,正确的图像逐渐模糊,从上到下:

Logo Blurred and Blended