Visão geral de regiões de tecnologia
Se várias tecnologias de apresentação são usadas em um aplicativo, como o WPF Win32 ou do DirectX, eles devem compartilhar as áreas de processamento dentro de uma janela de nível superior comuns. Este tópico descreve problemas que podem influenciar a apresentação e a entrada para seu aplicativo de interoperação do WPF.
Regions
Dentro de uma janela de nível superior, Conceituar cada HWND que consiste em uma das tecnologias de um aplicativo de interoperação com sua própria região (também chamado de "airspace"). Exatamente um HWND, o que constitui a região do que HWND pertence cada pixel dentro da janela. (Estritamente falando, há mais de um WPF região se houver mais de um WPF HWND, mas para fins desta discussão, suponha que existe apenas um). A região implica que todas as camadas ou outras janelas que tentam processar acima desse pixel durante o tempo de vida do aplicativo devem ser parte da mesma tecnologia de nível de processamento. Tentando processar WPF pixels sobre Win32 leva a resultados indesejáveis e não é permitido tanto quanto possível, por meio de interoperação APIs.
Exemplos de região
A ilustração a seguir mostra um aplicativo que combina Win32, DirectX, e WPF. Cada tecnologia usa seu próprio conjunto de não-sobreposição, separado de pixels e não há nenhum problema de região.
Suponha que esse aplicativo usa a posição do ponteiro do mouse para criar uma animação que tenta processar sobre qualquer um desses três regiões. Não importa qual tecnologia foi responsável pela animação propriamente dito, o que a tecnologia violaria a região dos outros dois. A ilustração a seguir mostra uma tentativa de processar um círculo WPF em uma região do Win32.
Outra violação é se você tentar usar a mistura entre diferentes tecnologias de transparência/alfa. Na ilustração a seguir, o WPF caixa viola a Win32 e DirectX regiões. Because pixels in that WPF box are semi-transparent, they would have to be owned jointly by both DirectX and WPF, which is not possible. Portanto, isso é outra violação e não pode ser construído.
Os três exemplos anteriores usadas regiões retangulares, mas formas diferentes são possíveis. Por exemplo, uma região pode ter um buraco. A ilustração a seguir mostra um Win32 região com um buraco retangular, esse é o tamanho da WPF e DirectX regiões combinados.
Regiões podem também ser completamente não-retangulares, ou de qualquer forma describable por um Win32 HRGN (região).
Transparency and Top-Level Windows
O Gerenciador de janelas do Windows somente realmente processa Win32 HWNDs. Portanto, cada WPF Window é um HWND. The Window HWND must abide by the general rules for any HWND. Dentro dessa HWND, WPF código pode fazer qualquer gerais WPF APIs suporte. Mas para interações com outros HWNDs na área de trabalho, WPF devem obedecer aos Win32 de processamento e o processamento de regras. WPFsuporta o windows não retangulares usando Win32 APIs— HRGNs para o windows não retangulares e janelas em camadas para um alfa por pixel.
Não há suporte para chaves constantes de cor e alfa. Win32recursos da janela em camadas variam por plataforma.
Layered windows can make the entire window translucent (semi-transparent) by specifying an alpha value to apply to every pixel in the window. (Win32 na verdade alfa do suporta por pixel, mas isso é muito difícil de usar em programas práticos, pois nesse modo, será necessário desenhar qualquer filho HWND sozinho, incluindo caixas de diálogo e menus suspensos).
WPFoferece suporte a HRGNs; No entanto, há não gerenciado APIs para esta funcionalidade. You can use platform invoke and HwndSource to call the relevant Win32 APIs. For more information, see Chamar funções nativas do código gerenciado.
WPFjanelas em camadas têm recursos diferentes em diferentes sistemas operacionais. Isso ocorre porque WPF usa DirectX para processar, e em camadas do windows foi projetado principalmente para GDI de processamento, não DirectX renderização.
WPFwindows em camadas de hardware de suporta acelerado no Windows Vista e posterior. Windows em camadas de hardware acelerado no Microsoft Windows XP requerem suporte de Microsoft DirectX, portanto, os recursos dependem da versão do Microsoft DirectX na máquina.
WPF does not support transparency color keys, because WPF cannot guarantee to render the exact color you requested, particularly when rendering is hardware-accelerated.
Se seu aplicativo está sendo executado em Microsoft Windows XP, em camadas windows na parte superior do DirectX superfícies piscar quando a DirectX aplicativo processa. (A seqüência de processamento real é que Microsoft Windows Graphics Device Interface (GDI) oculta a janela em camadas, em seguida, DirectX desenha e, em seguida, Microsoft Windows Graphics Device Interface (GDI) recoloca a janela em camadas). Non-WPF layered windows also have this limitation.
Consulte também
Tarefas
Demonstra Passo a passo: Hospedando um relógio WPF no Win32
Hospedagem de conteúdo do Win32 no WPF