Información general sobre áreas de la tecnologíaTechnology Regions Overview

Si se usan varias tecnologías de representación en una aplicación, como WPF, Win32 o DirectX, deben compartir las áreas de representación en una ventana común de nivel superior.If multiple presentation technologies are used in an application, such as WPF, Win32, or DirectX, they must share the rendering areas within a common top-level window. En este tema se describen los problemas que podrían afectar a la presentación y la entrada de una aplicación de interoperación WPF.This topic describes issues that might influence the presentation and input for your WPF interoperation application.

RegionesRegions

Dentro de una ventana de nivel superior, puede interpretarse que cada HWND que incluye una de las tecnologías de una aplicación de interoperación tiene su propia región (conocida también como "espacio aéreo").Within a top-level window, you can conceptualize that each HWND that comprises one of the technologies of an interoperation application has its own region (also called "airspace"). Cada píxel de la ventana pertenece exactamente a un HWND, que constituye la región de ese HWND.Each pixel within the window belongs to exactly one HWND, which constitutes the region of that HWND. (En realidad, hay más de una región de WPFWPF si hay más de un HWND de WPFWPF, pero para los propósitos de este tutorial, puede suponer que solo hay una).(Strictly speaking, there is more than one WPFWPF region if there is more than one WPFWPF HWND, but for purposes of this discussion, you can assume there is only one). La región implica que todas las capas u otras ventanas que intentan representarse sobre ese píxel durante la duración de la aplicación deben formar parte de la misma tecnología de nivel de representación.The region implies that all layers or other windows that attempt to render above that pixel during application lifetime must be part of the same render-level technology. El intento de representar WPFWPF píxeles sobre Win32Win32 los resultados no deseados y no se permite en la medida de lo posible a través de las API de interoperación.Attempting to render WPFWPF pixels over Win32Win32 leads to undesirable results, and is disallowed as much as possible through the interoperation APIs.

Ejemplos de regiónRegion Examples

En la ilustración siguiente se muestra una aplicación Win32Win32que combina, DirectX WPFWPFy.The following illustration shows an application that mixes Win32Win32, DirectX, and WPFWPF. Cada tecnología usa su propio conjunto de píxeles independientes no superpuestos y no hay ningún problema con la región.Each technology uses its own separate, non-overlapping set of pixels, and there are no region issues.

Un ejemplo de una aplicación que combina Win32, DirectX y WPF.

Suponga que esta aplicación usa la posición del puntero del mouse para crear una animación que se intenta representar sobre cualquiera de estas tres regiones.Suppose that this application uses the mouse pointer position to create an animation that attempts to render over any of these three regions. Independientemente de cuál fuese la tecnología responsable de la animación propiamente dicha, esa tecnología invadiría la región de las otras dos.No matter which technology was responsible for the animation itself, that technology would violate the region of the other two. En la ilustración siguiente se muestra un intento de representar un círculo de WPF sobre una región de Win32.The following illustration shows an attempt to render a WPF circle over a Win32 region.

Intento de representar un círculo de WPF en una región de Win32.

Otra infracción consiste en intentar usar la transparencia/combinación alfa entre distintas tecnologías.Another violation is if you try to use transparency/alpha blending between different technologies. En la ilustración siguiente, el WPFWPF cuadro infringe las Win32Win32 regiones de DirectX y.In the following illustration, the WPFWPF box violates the Win32Win32 and DirectX regions. Dado que los píxeles WPFWPF de ese cuadro son semitransparentes, deben ser propiedad conjunta de DirectX y WPFWPF, lo que no es posible.Because pixels in that WPFWPF box are semi-transparent, they would have to be owned jointly by both DirectX and WPFWPF, which is not possible. Por tanto, es otra infracción y no se puede generar.So this is another violation and cannot be built.

Diagrama que muestra un cuadro de WPF que infringe las regiones Win32 y DirectX.

En los tres ejemplos anteriores se usaban regiones rectangulares, pero es posible usar formas diferentes.The previous three examples used rectangular regions, but different shapes are possible. Por ejemplo, una región puede tener un hueco.For example, a region can have a hole. En la ilustración siguiente se Win32Win32 muestra una región con un orificio rectangular que es el tamaño WPFWPF de las regiones de y DirectX combinados.The following illustration shows a Win32Win32 region with a rectangular hole this is the size of the WPFWPF and DirectX regions combined.

Diagrama que muestra una región de Win32 con un orificio rectangular.

Las regiones también pueden adoptar cualquier forma no rectangular, o cualquier forma que pueda describirse mediante un HRGN de Win32Win32 (región).Regions can also be completely nonrectangular, or any shape describable by a Win32Win32 HRGN (region).

Diagrama que muestra una región no rectangular.

Transparencia y ventanas de nivel superiorTransparency and Top-Level Windows

El administrador de ventanas de Windows realmente solo procesa los HWND de Win32Win32.The window manager in Windows only really processes Win32Win32 HWNDs. Por lo tanto WPFWPF , cada Window es un HWND.Therefore, every WPFWPF Window is an HWND. Window HWND debe cumplir las reglas generales de cualquier HWND.The Window HWND must abide by the general rules for any HWND. Dentro de ese HWND WPFWPF , el código puede hacer todo WPFWPF lo que admiten las API globales.Within that HWND, WPFWPF code can do whatever the overall WPFWPF APIs support. Pero para las interacciones con otros HWND en el escritorio, WPFWPF debe cumplir las reglas de procesamiento y representación de Win32Win32.But for interactions with other HWNDs on the desktop, WPFWPF must abide by Win32Win32 processing and rendering rules. WPFWPFadmite ventanas no rectangulares mediante el Win32Win32 uso de API: hrgn para ventanas no rectangulares y ventanas superpuestas para un alfa por píxel.supports non-rectangular windows by using Win32Win32 APIs—HRGNs for non-rectangular windows, and layered windows for a per-pixel alpha.

No se admiten los valores de alfa ni las claves de color constantes.Constant alpha and color keys are not supported. Las capacidades de las ventanas superpuestas de Win32Win32 varían según la plataforma.Win32Win32 layered window capabilities vary by platform.

Las ventanas superpuestas pueden hacer que toda la ventana sea translúcida (semitransparente) especificando un valor de alfa que se aplique a todos los píxeles de la ventana.Layered windows can make the entire window translucent (semi-transparent) by specifying an alpha value to apply to every pixel in the window. (De hecho, Win32Win32 admite el valor alfa por píxel, pero se trata de algo muy complicado de usar en programas prácticos, porque en este modo se debería dibujar manualmente cada HWND secundario, incluidos los cuadros de diálogo y los cuadros desplegables).(Win32Win32 in fact supports per-pixel alpha, but this is very difficult to use in practical programs because in this mode you would need to draw any child HWND yourself, including dialogs and dropdowns).

WPFWPFadmite hrgn; sin embargo, no hay ninguna API administrada para esta funcionalidad.supports HRGNs; however, there are no managed APIs for this functionality. Puede usar la invocación de HwndSource plataforma y llamar a Win32Win32 las API pertinentes.You can use platform invoke and HwndSource to call the relevant Win32Win32 APIs. Para más información, vea Llamar a funciones nativas desde código administrado.For more information, see Calling Native Functions from Managed Code.

Las ventanas superpuestas de WPFWPF tienen características diferentes según el sistema operativo.WPFWPF layered windows have different capabilities on different operating systems. Esto se debe WPFWPF a que usa DirectX para representarse y las ventanas superpuestas se diseñaron principalmente para la representación de GDI, no para la representación de DirectX.This is because WPFWPF uses DirectX to render, and layered windows were primarily designed for GDI rendering, not DirectX rendering.

  • WPF admite ventanas superpuestas con aceleración de hardware.WPF supports hardware accelerated layered windows.

  • WPFWPF no admite las claves de color de transparencia, porque WPFWPF no puede garantizar que se represente exactamente el color que se solicita, en particular cuando se aplica la aceleración de hardware a la representación.does not support transparency color keys, because WPFWPF cannot guarantee to render the exact color you requested, particularly when rendering is hardware-accelerated.

Vea tambiénSee also