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