2011-06-04 108 views
18

白框,我在WPF应用模糊效果的图像,像这样:高斯模糊导致周围图像

<Image ClipToBounds="True"> 
    <Image.Effect> 
     <BlurEffect Radius="100" KernelType="Gaussian" RenderingBias="Performance" /> 
    </Image.Effect> 
</Image> 

正如你所看到的,半径较大,因为图像是大我需要它是真的模糊。但是,对于一个大的半径,我会在附加图像中看到围绕我的图像的轻框。我怎样才能抑制这一点?

如果你想知道:结果是一样的,无关紧要RenderingBias。边界也以质量模式生成。

White border around image

回答

10

发生了什么事是一个模糊的结果连同ClipToBounds。由于您使用的是高斯模糊,因此边缘将自然融入背景(白色)。

应用ClipToBounds基本上会切断它将会融入白色的地方,所以为什么你会得到一个白色的框架。

除非你愿意更多地剪切图像,不幸的是,这只是模糊的工作。

Screenshot of cliptobounds

+0

这就是我的想法 - 所以:是否有另一种模糊图像的方式,以便它不会像那样褪色?例如:当我使用Paint.NET将高斯模糊滤镜应用于半径为100的图像时,我看不到该边框。 – 2011-06-04 21:35:58

+0

WPF只支持高斯模糊和框模糊(这是更糟糕的)。 唯一的解决方法是如果您删除ClipToBounds,因为它应该导致更自然的外观。 – LongZheng 2011-06-05 11:12:02

+0

嗯。有什么我可以做的代码?我想要做的是:拍摄源图像,创建一个模糊的版本,并使用不透明蒙版将它们混合在一起。 – 2011-06-05 11:39:34

3

之前模糊,你可以垫使用的像素从图像边界的图像。通过这样做,您可以确保使用相似颜色的像素模糊边框周围的像素,而白色边框将会消失。当然,模糊后将图像裁剪回原始大小。