Pergunta

Eu estou trabalhando com uma aplicação Win32 que as necessidades para criar uma variedade de tipos de janela de costume. Em particular, estas janelas são frequentemente não-retângulo, tem sombras, ou são na maior parte transparente.

Atualmente estou usando WS_EX_LAYERED com UpdateLayeredWindow para criar janelas transparentes que eu possa, em seguida, chamar meus gráficos arbitrários no. No entanto, acho janelas em camadas ser limitativa em que você não pode ter janelas filho em camadas, nem pode uma janela em camadas adequadamente hospedar controles 'normais' Win32.

A nossa base de código é de vários anos de idade, utilizando principalmente Win32 e GDI, mas nós estamos no processo de modernização coisas e é hora de olhar para as tecnologias mais recentes.

Eu considerei fazendo meu costume de janelas em WPF, mas estou preocupado com o que eu li sobre questões 'espaço aéreo'. Parece que os usos do WPF em camadas janelas para realizar sua mistura alfa por pixel e assim parece que também sofrem com as limitações que experimentei anteriormente.

Eu não sei muito (qualquer coisa, na verdade) sobre Direct2D, mas que soa de tecnologia como a que poderia ser interessante. Embora, eu não consigo encontrar qualquer referência ao facto de ser capaz de fazer sobreposição de janelas.

Então, tudo isso me leva ao meu problema: Qual é a melhor tecnologia para fazer janelas de sobreposição no Windows? (Vista e Win7 no mínimo, XP seria bom ter)

Am I negligenciar alguns, particularmente boa tecnologia? Todas as sugestões serão apreciadas.

Foi útil?

Solução

Eu recomendo Direct2D e DirectWrite como você começa renderização de alta qualidade que também é ridiculamente rápido em comparação com qualquer GDI ou qualquer coisa feita no espaço .Net. O único problema é que você precisa Vista ou OS depois de usá-lo.

Outras dicas

WPF pode fazer o que você está procurando muito facilmente, mas, esta característica particular de WPF (janelas com transparência por pixel) tende a ser muito problemática devido à drivers gráficos erros (fabricantes de hardware aparentemente gráfico não teste em camadas Direct3D janelas com valor alfa por pixel muito bem).

WPF faz uso janelas em camadas de transparência, mas não usar controles de win32 "normais", todos os controles WPF em uma janela de torná-las auto usando apenas um win32 janela, eles toda a transparência apoio.

A questão "espaço aéreo" só acontece quando você hospedar um WinForms controlar dentro de uma janela WPF.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top