2011-06-04 86 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

之前模糊,你可以墊使用的像素從圖像邊界的圖像。通過這樣做,您可以確保使用相似顏色的像素模糊邊框周圍的像素,而白色邊框將會消失。當然,模糊後將圖像裁剪回原始大小。