¿Cómo consigo un diálogo de ventanas transparentes y primitivas de dibujo que se mantienen en la parte superior de una ventana que está llegando la transmisión de vídeo?

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

Pregunta

Tengo un control ActiveX que contiene una ventana que tiene la transmisión de vídeo se señala a él. Tengo un diálogo separado que creo en otra ventana que he hecho transparente o semi-transparente de diferentes maneras (es decir, utilizando los SetLayeredWindowAttributes (...) junto con la propiedad Layered [para mezcla alfa] del cuadro de diálogo o establecer el transparente propiedad).

Además he tratado de utilizar varios métodos para tratar de obtener la ventana de diálogo para dibujar siempre en la parte superior de la ventana de transmisión de vídeo, pero ninguno ha demostrado que funciona para mí. Si tengo un botón en el cuadro de diálogo o dibujar sobre la superficie transparente con LineTo (...) se pide que no se queden en la parte superior del vídeo. He tratado de SetWindowPos uso para afectar el orden z de las dos ventanas y también trató de cambiar las propiedades de la ventana de diálogo como "TopMost", pero sin resultado.

¿Alguien ha tratado de hacer algo como esto para una ventana superpuesta sobre la transmisión de vídeo y conseguido el orden z de trabajo en la pintura de la ventana delantera siempre después de la transmisión de vídeo?

ACTUALIZACIÓN: 02/10/10 - intentado utilizar la propiedad WS_EX_LAYERED con SetLayeredWindowAttributes (...) usando LWA_COLORKEY y logrado lo que buscaba. Siendo la propiedad en capas no se puede utilizar con el estilo WS_CHILD esta solución trae consigo algo de administración requerida de la posición de la ventana de superposición con respecto a la ventana con el vídeo. Además hay algunas otras rarezas que estoy tratando de eliminar. Por ejemplo, cuando la ventana de control ActiveX con vídeo está integrado en una pestaña IE y cambiar a otro controles de pestañas en la ventana de superposición permanecer en la cima de la nueva pestaña (cuando se utiliza el estilo WS_POPUP). Sigue investigando si habrá medios alternativos para hacer frente a este otro y luego determinar el interruptor y el visability ocultar la ventana.

¿Fue útil?

Solución 2

propiedad WS_EX_LAYERED con SetLayeredWindowAttributes (...) usando LWA_COLORKEY va a lograr la transparencia, donde se utiliza la clave de color. restos de superposición Transpaerent delante de vídeo y streaming de video en vivo se mantiene activa. estilo WS_CHILD no se puede utilizar con un estilo en capas y por lo tanto requiere que la administración posición de la ventana adicional si se utiliza WS_POPUP. Problemas adicionales pueden surgir de la incapacidad de tener superposición como una ventana secundaria. Q actualización -ver.

Otros consejos

Esto puede no ser posible, una gran cantidad de código de salida de vídeo hace uso de superposiciones de hardware por lo que si la ventana está en el frente, la superposición o bien no va a funcionar o no van a dibujar en sus píxeles son en absoluto.

superposiciones de hardware permite que el código de dibujo vídeo a cuadros presentes en un formato distinto al del formato de visualización actual, que puede ahorrar una gran cantidad de CPU y ancho de banda de memoria.

En mi experiencia, la superposición es por lo general en formato YUV en lugar de RGB porque muchos formatos de compresión de vídeo se basan en YUV. Por lo que el hardware de vídeo está recibiendo algunos píxeles de una imagen de YUV y no desde el búfer de pantalla, lo que no puede afectar a estos píxeles a no ser que usted se consigue insertarse en la ruta de código de representación de la secuencia de vídeo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top