Monthly Archives: February 2009

Wspólnota jest jak wielka mozaika. Każda cząstka z osobna wydaje się mało znacząca. Jeden kawałek jest jasnoczerwony, inny zimnoniebieski albo szarozielony, inny ciepłopurpurowy, jaskrawożółty czy jasnozłoty. Jedne wyglądają szlachetnie, drugie zwyczajnie. Jedne sprawiają wrażenie cennych, drugie bezwartościowych. Jedne są krzykliwe, drugie delikatne. Z każdym poszczególnym kawałkiem osobno nie da się wiele zrobić. Można najwyżej je porównywać, szacować ich piękno i wartość. Kiedy jednak wszystkie te kawałki zostają złożone razem, w jedną wielką mozaikę portretującą oblicze Chrystusa, czy znajdzie się ktoś, kto zakwestionuje ich wartość? Jeśli zabraknie jednego, choćby najmniejszego, oblicze nie będzie kompletne. Każdy kamyczek w mozaice jest nieodzowny i wnosi niepowtarzalny wkład do chwały Boga. Oto wspólnota, braterstwo małych ludzi, którzy dopiero razem sprawiają, że Bóg jest widoczny na świecie.

Henri J. M. Nouwen

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.