在我的应用程序中,我需要对图像应用模糊滤镜。但是,效果应该越强,像素越远离用户可以在图像中自由绘制的线条。
让我们假设用户绘制的线条正好在中间水平分割图像。然后沿着这条线,渐变的效果应该是0%,从这条线的上下一半,效果应该是50%等。(如果您的机器上有Picasa,对椭圆渐变有类似的效果)
现在我想我可能会尝试以下(我还没有,到目前为止 - 我只是在这里收集想法):我可能会创建一个100%模糊的图像版本,并使用alpha将其与原始图像相结合-面具。这个alpha-mask将使用简单的黑/白线性渐变创建。
你认为这可行吗?是否可以直接使用过滤器实现其他实现?
答案 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>
这就是它的样子,正确的图像逐渐模糊,从上到下: