創建Glass窗口就像在WPF中調用DwmExtendFrameIntoClientArea一樣簡單,但這只是訣竅的一半。如果你禁用航空,並獲得類似XP的皮膚,那就是痛苦開始的地方:WPF玻璃窗後備?
在XP(或禁用航空)中,您必須調用DrawThemeBackground以獲得「透明的感覺」,Internet Explorer也會對其執行此操作頂部,嘗試禁用航空,看看。
我已經熟了的應用程序,不只是是,fallback gracefully when Aero is disabled in Windows.Forms.
問題:但在WPF做不同的是,它的OnRender給你的DrawingContext,如何(OnPaint中當量阿瓦隆。)一個借鑑DrawThemeBackground WINAPI調用?
對,這就是我最初嘗試也開始油漆等,但我還是沒能畫到的DrawingContext。我的Aero Glass WPF窗口擴展(之前的一個博客條目)使用類似的技巧,雖然沒有處理HDC,但工作得很好。 我認爲我們應該嘗試改爲DrawThemeBackground - > System.Windows.Media.Drawing - > System.Windows.Media.DrawingBrush,並使用DrawingContext.DrawRectangle(ourDrawThemeBackgroundBrush,...)在OnRender覆蓋,但我沒有包裝自己在那附近呢。 – Ciantic 2009-10-05 18:36:12
也許你可以創建一個正確大小的圖像,使用Graphics.FromImage獲得一個DC,在這個DC上調用DrawThemeBackground並在你的DrawingContext中繪製圖像......但我不確定它會如何工作,它可能會導致性能問題 – 2009-10-05 19:53:41
如果我們可以讓「乾淨」的圖形對象在哪裏繪製,並將其轉換爲繪圖...我會嘗試。繪製到現有的圖形是一樣的,在我的形式的東西,所以這個問題可能歸結爲將其轉換爲繪圖/ DrawingImage。 – Ciantic 2009-10-05 21:51:20