2011-06-04 16 views
18

etrafındaki beyaz çerçeveye yol açar:Gauss bulanıklığı ben şöyle WPF bir görüntüye bulanıklık efekti uyguluyorum resmin

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

Gördüğünüz gibi görüntü büyüktür ve çünkü, yarıçap, büyük ben gerçekten bulanık olması gerekiyor. Bununla birlikte, büyük bir yarıçap için, ekli görüntüde görüldüğü gibi görüntümün etrafında hafif bir çerçeve alıyorum. Bunu nasıl baskılayabilirim?

Merak ediyorsanız: Sonuç aynı değil RenderingBias. Kalite modunda da bir kenarlık üretilir. Ne oluyor

White border around image

cevap

10

ClipToBounds ile birlikte bir bulanıklık sonucudur. Bir Gauss bulanıklığı kullandığınızdan, kenarlar doğal olarak arka plana (beyaz) karışacaktır.

ClipToBounds uygulamak temelde beyazın içine karıştığı yeri keser, bu nedenle beyaz bir çerçeve elde edersiniz.

Görüntüyü daha fazla kırpmak istemediğiniz sürece, maalesef bu ne kadar bulanık bir çalışmadır.

Screenshot of cliptobounds

+0

Bu benim düşündüğüm de buydu - yani: görüntüyü bulanıklaştırmanın başka bir yolu var mı? Örneğin: Paint.NET'i, Gauss Bulanıklığı filtresini, 100 bir yarıçap kullanarak görüntüye uygulamak için kullandığımda, o sınırı görmüyorum. –

+0

WPF sadece Gauss Bulanıklığı ve Kutu Bulanıklığını destekler (daha da kötüsü). Tek çözüm, ClipToBounds'u kaldırırsanız daha doğal bir görünüme neden olması gerektiğidir. – LongZheng

+0

Hm. Kodda yapabileceğim bir şey var mı? Yapmak istediğim: kaynak görüntüyü almak, bulanık bir sürüm oluşturmak ve bunları bir opaklık maskesi kullanarak bir araya getirmek. –

3

bulanık önce, Sen ped görüntü sınırından piksel kullanarak görüntüyü can. Bunu yaparak, etraftaki bulanık piksellerin, benzer renkteki pikseller kullanılarak bulanık olacağını ve beyazımsı kenarlıkların kaybolacağından emin olabilirsiniz. Tabii ki, bulanıklaştırdıktan sonra görüntüyü orijinal boyutuna geri döndürün.

İlgili konular