Как получить прозрачную диалог Windows и рисовать примитивы, чтобы оставаться на вершине окна, которое рисует потоковое видео?

StackOverflow https://stackoverflow.com/questions/2180125

Вопрос

У меня есть элемент управления ActiveX, который содержит одно окно, которое набирается потоковое видео. У меня есть отдельный диалог, который я создаю в другом окне, в котором я сделал прозрачный или полупрозрачный различные способы (т.е. с использованием setlayeredwindowattributes (...) вместе с многослойным свойством [для альфа-смешивания] диалогового окна или настройки прозрачного имущество).

Кроме того, я пытался использовать различные методы, чтобы попытаться получить окно для диалогового окна, чтобы всегда нарисовать на вершине потокового видео окна, но никто не оказался для меня. Если у меня есть кнопка на диалоговом окне или нарисовать прозрачную поверхность с помощью Lineto (...), они не остаются в верхней части видео. Я пытался использовать SetWindowPOS, чтобы повлиять на Z-ряд двух окон, а также попытался изменить свойства окна диалогового окна, такие как «самого верхнего», но безрезультатно.

Кто-нибудь пытался сделать что-то вроде этого для наложенного окна над потоковым видео и получила Z-упорядочение для работы на покраске переднего окна всегда после потокового видео?

Обновление: 02/10/10 - попробовал с помощью WS_EX_LAYERED имущества с setlayeredwindowattributes (...), используя lwa_colorkey и добился того, что я искал. Поскольку многослойное свойство нельзя использовать с стилем WS_CHILD, это решение приносит с собой некоторое необходимое управление положением оверлейного окна в отношении окна с видео. Кроме того, есть некоторые другие странности, которые я пытаюсь устранить. Например, когда окно управления ActiveX с видео встроена в вкладку IE, и я переключаюсь на другую вкладку «Управление» на окне Overlay остается на верхней части новой вкладки (когда используется стиль WS_POPUP). Еще расследование, если будут альтернативные средства для решения этого другого, затем определяют выключатель и скрывая видимость окна.

Это было полезно?

Решение 2

WS_EX_LAYERED Свойство с setlayeredwindowattributes (...) Использование LWA_COLOROKEY достигнет прозрачности, в которой используется ColLowKey. Трансварентное наложение остается перед видео и активное потоковое видео остается в прямом эфире. WS_CHILD STYLE не может использоваться с слоистым стилем и, следовательно, окна, требует дополнительного управления, если используется WS_POPUP. Дополнительные проблемы могут возникнуть из неспособности иметь наложение в качестве дочернего окна. -Если q Обновление.

Другие советы

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

Аппаратные наложения позволяют код рисования видео представить кадры в формате, отличном от имени текущего формата отображения, который может сэкономить много пропускной способности CPU и памяти.

По моему опыту наложение обычно находится в формате YUV, а не RGB, потому что многие форматы сжатия видео основаны на YUV. Таким образом, видеотехничное обеспечение получает некоторые пиксели от изображения YUV, а не из буфера экрана, поэтому вы не можете повлиять на эти пиксели, если только вы не вставите в путь рендеринга.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top