Как в WinForms сделать произвольную тень у форму?

Рейтинг: 1Ответов: 1Опубликовано: 05.05.2015

Как на C# в WinForms сделать произвольную тень у формы? Чтобы можно было менять радиус и прозрачность.

Ответы

▲ 2

Если хром (рамка у окна) системный, то тень тоже системная, и вы на неё никак не можете повлиять. В Win7 вы можете повлиять разве что на границы прозрачной аэро-области — с какого края как много она отнимает. На этом свобода действий заканчивается.

Если хром ваш, и вы рисуете рамку и системные кнопки самостоятельно, то и тень вы тоже можете нарисовать самостоятельно любыми доступными вам средствами: генерировать с помощью размытия, собирать из кусочков и т. п. В этом случае вы отвечаете за всё: и как обрабатывать нажатие на заголовок, и как растягивать окно, и как отображается тень, и как на всё это влияют пользовательские и системные настройки.

В обоих случаях вы можете воспользоваться CS_DROPSHADOW в CreateParams, чтобы насильно включить или отключить системную тень, но на её параметры мы повлиять не можете, и она вообще может не отобразиться, если пользователь отключил тени у окон.