2011-08-05 175 views
4

我需要知道,這是模糊Windows Phone 7應用程序的背景以將用戶的注意力集中在「始終在最上面」彈出窗口上的最佳方式。WP7背景模糊效果

WP7 Blured

我的想法是:

  1. 使背景網格的內存截圖(將其變成可凍結或東西)。
  2. 添加與背景網格重疊的圖像,但低於(使用z-index)彈出窗口。

不過我懷疑我將能夠重疊的應用程序欄。

此時,如果您有解決方案,請告知。

回答

4

你一些指點...

不幸的是,Silverlight的BlurEffect等位圖效果didn't make it into Window Phone 7,所以你必須自己實現的模糊。這其實很簡單,只需使用Gaussian Convolution Filter即可。

爲了達到這種效果,你可以捕捉你的應用程序的可視爲WriteableBitmap的,處理這些圖像來創建模糊,然後使用彈出你的申請覆蓋此圖像。我沒有在博客中類似的東西,我寫了一篇關於飛出文字動畫這裏:

http://www.scottlogic.co.uk/blog/colin/2011/04/metro-in-motion-3-flying-titles/

找到根視覺如下:

var rootElement = Application.Current.RootVisual as FrameworkElement; 

加入這個UI的副本到一個彈出如下:

_backgroundMask = new Rectangle() 
    { 
    Fill = new SolidColorBrush(Colors.Black), 
    Opacity = 0.0, 
    Width = rootElement.ActualWidth, 
    Height = rootElement.ActualHeight 
    }; 
    _popupCanvas.Children.Add(_backgroundMask); 

    _targetElementClone = new Image() 
    { 
    Source = new WriteableBitmap(element, null) 
    }; 
    _popupCanvas.Children.Add(_targetElementClone); 

,並顯示:

_popup.IsOpen = true; 

我會留給你弄清楚如何模糊背景!

順便說一句,你將無法覆蓋或捕獲應用程序欄的視覺效果。在執行此轉換之前隱藏它。

最後,模糊背景並不是真的很'地鐵'。你確定你要這麼做嗎?

+0

不,我不是。您建議如何將用戶的注意力集中在彈出窗口上?鑑於我有一個基本的「黑色背景」應用程序,將所有東西都放在背景上看起來會比模糊更糟。 –

+1

在我看來,一個簡單的不透明面具會做。使用我上面給出的代碼,只需用一個不透明度=「0」的黑色矩形填充彈出框。5「 – ColinE

+0

看起來不錯,謝謝。 –

1

而不是模糊只是使用頁面頂部的半透明層。

你應該試圖創造,你將不能夠放置在它上面的任何這樣的效果之前隱藏應用程序欄。

+0

你能告訴我如何添加一個半透明層?我可以跨越我的窗口控制哪個控件? –

+2

@Maxim添加一個「矩形」並設置「不透明度」應該這樣做。 –