¿Cuál es el mejor método para la elaboración de superposición de gráficos en Windows?

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

  •  16-09-2019
  •  | 
  •  

Pregunta

Estoy trabajando con una aplicación Win32 que necesita para crear una variedad de tipos de encargo de la ventana. En particular, estas ventanas son a menudo no rectángulo, tienen sombras, o son en su mayoría transparente.

Actualmente estoy usando WS_EX_LAYERED con UpdateLayeredWindow para crear ventanas transparentes que entonces puedo sacar mis gráficos arbitrarios en. Sin embargo, encuentro ventanas superpuestas que sean limitantes de que no se puede tener ventanas hijas en capas, ni puede una ventana por capas adecuadamente alojar controles 'normales' Win32.

Nuestro código base es de varios años, utilizando la mayoría de Win32 y GDI, pero estamos en el proceso de modernización de las cosas y es el momento de mirar a las nuevas tecnologías.

He pensado en hacer mi encargo de ventanas en WPF, pero estoy preocupado por lo que he leído acerca de los problemas 'del espacio aéreo'. Parece que WPF utiliza ventanas superpuestas para lograr su mezcla alfa por píxel y así parece que también sufren de las limitaciones que he experimentado con anterioridad.

No sé mucho (nada, en realidad) sobre Direct2D, pero que la tecnología suena como que podría ser interesante. Sin embargo, no puedo encontrar ninguna referencia a que es capaz de hacer ventanas de solapado.

Por lo tanto, todo esto me lleva a mi problema: ¿Cuál es la mejor tecnología para hacer ventanas de solapado en Windows? (Vista y Win7 como mínimo, XP sería bueno tener)

¿Estoy descuidando algunos, en particular una buena tecnología? se agradecería cualquier sugerencia.

¿Fue útil?

Solución

Recomiendo Direct2D y DirectWrite a medida que se de alta calidad de representación que también es ridículamente rápido en comparación con cualquiera de GDI o cualquier cosa hecha en el espacio .Net. El único problema es que se necesita Vista o posterior del sistema operativo para usarlo.

Otros consejos

WPF puede hacer lo que busca con mucha facilidad, pero, esta característica particular de WPF (ventanas con transparencia por píxel) tiende a ser muy problemático debido a errores de los controladores de gráficos (al parecer, los fabricantes de hardware gráfico no prueba Direct3D capas ventanas con valor alfa por píxel muy bien).

WPF hace uso de ventanas en capas de transparencia, pero que no utiliza controles "normales" Win32, todos los controles de WPF en una ventana hacerlas uno mismo con una sola ventana de Win32, todos transparencia apoyo.

El tema "espacio aéreo" sólo ocurre cuando aloja un control de Windows Forms dentro de una ventana de WPF.

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