Okno ze szkła

Windows Vista udziwnił troszeczkę konstrukcję okna wprowadzając półprzezroczystą część nazywaną Glass (szkło). Jest to ewidentnie wodotrysk i trochę dziwi mnie, dlaczego wprowadzono do API funkcje, które mogą okazać się tylko chwilową modą, która zniknie wraz z nastepną wersją systemu.

No dobrze, w Windows 7 dalej będzie ten wodotrysk, więc skoro już jest, to warto może spróbować go użyć (byle nie nadużyć). Nie oszukujmy się – ludzie lubią wodotryski.

WPF nie daje bezpośredniej możliwości operowania na szkle – potrzebujemy wywołać funkcję API DwmExtendFrameIntoClientArea przyjmującą jako argument uchwyt okna i strukturę MARGINS. A może by tak postarać się trochę i utworzyć DependencyProperty – animowalną, bindowalną i elegancką (na tyle, na ile DependencyProperty można nazywać elegancką) właściwość pozwalającą regulować szklany obszar okna?

Proponuję zrobić to tak:

Teraz – zamiast tworzyć okna na bazie klasy Window, możemy użyć klasy GlassWindow posiadającej właściwość GlassFrame typu Thickness, którą możemy się posługiwać jak każdą inną DependencyProperty.

Ustawiając dodatnie wartości dla GlassFrame, możemy regulować grubość szklaj ramki. Jeśli ustawimy wartości ujemne – całe okno zrobi się szklane.

2 thoughts on “Okno ze szkła

  1. Jak możesz – bo wydaję mi się że to gdzieś widziałem już, w sensie kodu – umieszczaj skompilowany programik aby szybko sprawdzić jak to wygląda 😉

  2. Powyższa klasa będzie użyta w następnym programiku, który opublikuję. I będzie od razu w wersji skompilowanej.

Leave a Reply

Your email address will not be published. Required fields are marked *