wpf 實現實時毛玻璃(live blur)效果

2021-09-08 20:22:29 字數 1223 閱讀 9145

原文:

wpf 實現實時毛玻璃(live blur)效果

i2os7發布後,就被它的時實模糊吸引了,就想著能不能將這個效果引入到我們的產品上。拿來當mask肯定會很爽,其實在之前也做過類似的,但是不是實時效果,是死的,只是截圖然後模糊,當背景,效果可想而知。

然後就想著自己做實時濾鏡,   自己寫了高斯模糊演算法,模糊效果還算可以,但是背景取樣效率太低,也試過優化這個過程。試過:將截圖縮小,再模糊,再放大,模糊時先橫向再縱向,最終效果還是不理想。

最後 發現wpf裡的自visualbrush就可以輕鬆完成這個效果。

首先來一張最終執行的效果圖:

這裡為了確定它真的是實時的,我將兩個放在scrollviewer裡面。以便可以拖動預覽效果。這裡的模糊半徑是80

主要思路是,在blurmask裡面新增乙個border,這個border的背景就是實時模糊效果。

模糊層我是自定義了乙個blurmask控制項,該控制項繼承grid,以便在上面新增內容,也方便在沒有被blurmask覆蓋的時候將模糊效果切斷(下面那個小的模糊區域)。

blurmask中最主要的**:其中targetpanel就是需要覆蓋的那個控制項

border border=new border();

visualbrush brush = new visualbrush();

brush.visual = targetpanel;

brush.stretch = stretch.uniform;

border.background = brush;

border.effect = new blureffect()

border.margin = new thickness(-this.margin.left, -this.margin.top, 0, 0);

這樣我們就能實時的將targetpanel模糊,並顯示到border的背景上。接下來需要做的就是將border新增到grid中

this.cliptobounds = true;

this.children.clear();

this.children.add(border);

主要**就這麼一些,然後我們要做的是暴露需要設定的引數 模糊半徑和遮罩目標。

UIBlurEffect 毛玻璃特效實現

ios 8 後使用 uiblureffect 類和 uivisualeffectview 類新增毛玻璃特效更加便捷,高效。建立imageview iimageview imageview uiimageview alloc initwithimage uiimage imagenamed 5 建立需...

實現div毛玻璃背景

原文在我的部落格 實現div毛玻璃背景 ios裡毛玻璃效果的使用非常多,本文介紹乙個實現div毛玻璃背景的方法 css3的filter主要用在影象的特效處理上,預設值為none,還有以下備選項 1.grayscale灰度 2.sepia褐色 3.saturate飽和度 4.hue rotate色相旋...

實現div毛玻璃背景

ios裡毛玻璃效果的使用非常多,本文介紹乙個實現div毛玻璃背景的方法 css3的filter主要用在影象的特效處理上,預設值為none,還有以下備選項 1.grayscale灰度 2.sepia褐色 3.saturate飽和度 4.hue rotate色相旋轉 5.invert反色 6.opaci...