Прозрачность окна WPF (включая не-клиентскую область) - PullRequest
7 голосов
/ 27 января 2011

Есть ли способ сделать окно WPF прозрачным, не теряя не клиентскую область (границы, строку заголовка, кнопки закрытия / минимизации / максимизации)?

Для установки «AllowsTransparency» в значение «true» требуется, чтобы«WindowStyle» должен быть установлен в «None» (как объяснено в в этом ответе ), что удаляет не-клиентскую область.

Один из разработчиков WPF писал о том, как прозрачные окнаработать в WPF , и почему было бы трудно реализовать поддержку прозрачности вне клиентской области.

Независимо от того, что могут предложить ваши стили окон, прозрачные окна WPF не имеют видимыхне клиентская зона.Это хорошо для многих сценариев, где целью является создание пользовательской формы окна, но это может раздражать людей, которые просто хотят "добавить" нормальное окно.

Решение только для WPFзатем, кажется, не может быть и речи.

Вызов собственной функции SetLayeredWindowAttributes и передача дескриптора окна WPF и LWA_ALPHA не имеют никакого эффекта, как и ожидалось.

Единственный другойПодход, который я могу придумать, заключается в размещении содержимого WPF в окне Win32 (или, возможно, WinForms).Я подозреваю, что попытка сделать это приведет к проблемам с воздушным пространством , однако.

Многослойные окна WPF имеют различные возможности в разных операционных системах ... WPF не поддерживает цветовые клавиши прозрачности,потому что WPF не может гарантировать отображение именно того цвета, который вы запрашивали, особенно когда рендеринг выполняется с аппаратным ускорением.

Я не уверен, правильно ли я читаю вышеупомянутое, но звучит как попытка выполнить хостСодержимое WPF с прозрачностью невозможно.

Есть идеи?

Transparent Notepad2 Window

Ответы [ 2 ]

2 голосов
/ 27 января 2011

Fluidkit имеет стеклянное окно, которое, я думаю, вам и нужно.

1 голос
/ 27 января 2011

Вы можете настроить не-клиентскую область, используя библиотеку из ms, которая называется WPF Chrome . Проверьте эту статью: 'Custom Window Chrome' .

С помощью этой библиотеки вы можете сделать Chrome прозрачным и многое другое.

...