2011-10-18 109 views
0

在他的書中(臨WPF在C#2010的Windows Presentation Foundation在.NET 4)馬修·麥克唐納 - 寫道:應用Aero玻璃模糊到特定控制區在WPF

...您可以使用DwmEnableBlurBehindWindow( )將玻璃效果應用到 窗口中的特定區域。

這是否意味着我可以應用的Aero Glass效果,具體的控制(或者至少他們佔據的區域)?

請提供關於如何用C#做的一個例子。

+0

WPF不使用窗口的控制。所以是的。訪問pinvoke.net進行pinvoke聲明。這本書真的有用嗎? –

+0

我發現的所有例子都是你必須將Hwnd提供給DwmEnableBlurBehindWindow()的例子。因爲,正如我所知,WPF控件不是獨立的窗口,我猜測作者在他的假設中是錯誤的。順便說一句,這可能會在Windows窗口中工作,但=) –

+0

WPF將窗口中的所有內容都轉儲到單個HWND中。 – BoltClock

回答

0

如果我理解你的意圖是DWM實現模糊適用於將顯示在它後面的窗口內容的控制,則沒有:「此功能只能在頂層窗口稱爲」。

你可以,但是,申請DWM模糊包含在控制的區域控制頂層窗口,看到它背後的窗戶。檢查出的P/Invoke簽名DwmEnableBlurBehindWindowCreateRectRgnDeleteObject清理模糊區域。

+0

WvmEnableBlurBeindWindow如何與CreateRectRgn一起播放? –

+0

@ MaximV.Pavlov:見[MSDN] [1]。總之,'blurBehind'參數的hRgnBlur是要模糊的區域,'CreateRectRgn()'是創建區域的簡單方法(顯然是矩形區域)。查看其他HRGN相關函數的GDI API以創建非矩形區域。 [1]:http://msdn.microsoft.com/en-us/library/windows/desktop/aa969508(v=vs.85).aspx –

+0

好的,謝謝。得到它了! –