Как создать окно (CreateWindowEx), которое поддерживает прозрачность и размещается в окне WPF? ⇐ C#
Как создать окно (CreateWindowEx), которое поддерживает прозрачность и размещается в окне WPF?
Я пытаюсь создать окно, поддерживающее прозрачность, и поместить его в окно WPF в .net4.5
Я решил использовать: HwndHost, поэтому расширяю класс HwndHost и переопределяю в нем метод BuildWindowCore:
защищенное переопределение HandleRef BuildWindowCore(HandleRef hwndParent) { _winHand = CreateWindowEx(WS_EX_LAYERED, "static", string.Empty, WS_POPUP | WS_VISIBLE, 0, 0, _width, _height, hwndParent.Handle, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); // устанавливаем поддержку прозрачности SetLayeredWindowAttributes (_windowHandle, 100, 0, 2); вернуть новый HandleRef(this, _winHand); } Но в конце будет выдано исключение: Размещенный HWND должен быть дочерним окном указанного родителя.
Теперь я в тупике. Если мне нужно окно прозрачности, оно должно быть в стиле WS_POPUP, но если я хочу поместить окно в wpf с помощью HwndHost > это должен быть WS_Child
Можно ли как-нибудь это сделать?
Причина: Окно должно быть окном прозрачности, потому что мне нужно использовать SDL2 для рендеринга некоторого изображения rgba, которое включает альфа-канал. но если я не установил, окно не сможет отображать альфа-канал как прозрачный.
Я пытаюсь создать окно, поддерживающее прозрачность, и поместить его в окно WPF в .net4.5
Я решил использовать: HwndHost, поэтому расширяю класс HwndHost и переопределяю в нем метод BuildWindowCore:
защищенное переопределение HandleRef BuildWindowCore(HandleRef hwndParent) { _winHand = CreateWindowEx(WS_EX_LAYERED, "static", string.Empty, WS_POPUP | WS_VISIBLE, 0, 0, _width, _height, hwndParent.Handle, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); // устанавливаем поддержку прозрачности SetLayeredWindowAttributes (_windowHandle, 100, 0, 2); вернуть новый HandleRef(this, _winHand); } Но в конце будет выдано исключение: Размещенный HWND должен быть дочерним окном указанного родителя.
Теперь я в тупике. Если мне нужно окно прозрачности, оно должно быть в стиле WS_POPUP, но если я хочу поместить окно в wpf с помощью HwndHost > это должен быть WS_Child
Можно ли как-нибудь это сделать?
Причина: Окно должно быть окном прозрачности, потому что мне нужно использовать SDL2 для рендеринга некоторого изображения rgba, которое включает альфа-канал. но если я не установил, окно не сможет отображать альфа-канал как прозрачный.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему изображение не размещается без метода привязки (python) (tkinter)
Anonymous » » в форуме Python - 0 Ответы
- 37 Просмотры
-
Последнее сообщение Anonymous
-
-
-
ASP.NET MVC — файл RDLC не находится, когда проект публикуется и размещается локально
Anonymous » » в форуме C# - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-
-
-
ASP.NET MVC — файл RDLC не находится, когда проект публикуется и размещается локально
Anonymous » » в форуме C# - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-