Compartir a través de


Direct2D y Valores altos de PPP

Escribir una aplicación compatible con PPP es la clave para que una interfaz de usuario (UI) tenga un aspecto coherente en una amplia variedad de configuraciones de visualización de valores altos de PPP. Una aplicación que no es compatible con PPP, pero que se ejecuta en una configuración de visualización de valores altos de PPP puede sufrir muchos artefactos visuales, como el escalado incorrecto de elementos de la interfaz de usuario, el texto recortado y las imágenes borrosas. Al agregar compatibilidad en la aplicación para el reconocimiento de PPP, hace que la presentación de la interfaz de usuario de la aplicación sea más predecible, lo que hace que sea más atractivo y fácil de leer para los usuarios. Afortunadamente, Direct2D hace que sea más fácil que nunca escribir aplicaciones que funcionen bien en valores altos de PPP. En este tema se incluyen las siguientes secciones.

Compatibilidad con valores altos de PPP en Direct2D

Direct2D proporciona las siguientes características para trabajar con escenarios de valores altos de PPP:

  • Respeta automáticamente el VALOR de PPP del sistema al crear un destino de representación con ventanas, siempre y cuando el manifiesto de aplicación indique que la aplicación controla correctamente ppp. (Para obtener información sobre cómo declarar que la aplicación es compatible con PPP, consulte Cómo asegurarse de que la aplicación se muestra correctamente en pantallas con valores altos de PPP).
  • Expresa coordenadas en DIP (píxeles independientes del dispositivo), lo que permite que la aplicación se escale automáticamente cuando cambia la configuración de PPP.
  • Permite que los mapas de bits tengan un PPP y los escale correctamente teniendo en cuenta el PPP. Esta característica también se puede usar para mantener iconos en diferentes resoluciones.
  • Expresa la mayoría de los recursos en DIP, lo que hace que los recursos sean automáticamente independientes de la resolución.
  • Usa un espacio de coordenadas de punto flotante y suavizado de contorno, por lo que cualquier contenido se puede escalar a cualquier PPP arbitrario.

La canalización de gráficos de Direct2D está diseñada para escalar de 96 PPP a 1200DPI.

Windows 8 y valores altos de PPP

A partir de Windows 8, hay características adicionales para la compatibilidad con valores altos de PPP.

Si el valor de PPP del contexto del dispositivo es lo suficientemente alto, Direct2D cambia el umbral que usa para habilitar el suavizado vertical del texto. Esto da como resultado una representación de texto más rápida en pantallas con valores altos de PPP. Además, puede cambiar el modo de unidad a píxeles en lugar de DIP mediante el método ID2D1DeviceContext::SetUnitMode . Si establece el modo de unidad en píxeles y el valor de PPP del contexto del dispositivo en el PPP de pantalla, la optimización todavía está habilitada.

¿Qué es un DIP?

Un píxel independiente del dispositivo (DIP) es un píxel lógico que se asigna a los píxeles del dispositivo físico a través de un valor escalar, el PPP. PPP significa puntos por pulgada, donde un punto representa un píxel de dispositivo físico. (La nomenclatura procede de la impresión, donde los puntos son el punto de tinta más pequeño que un proceso de impresión puede producir). Dado que un monitor estándar solía tener 96 puntos por pulgada, un PPP de 96 significaba que un píxel independiente del dispositivo (o DIP) asignaba 1:1 con un píxel físico. Por ejemplo, si el VALOR de PPP fuera 96*2 = 192, una única DIP abarcaría dos píxeles físicos.

Hay muchas razones por las que las aplicaciones no controlan necesariamente este escalado correctamente; Una de las razones más sencillas es que requiere trabajo adicional para detectar y usar este valor escalar al representar. En Direct2D, el escalado se aplica de forma predeterminada. Debido a esta asignación, los píxeles de dispositivo físico pueden acabar en coordenadas DIP fraccionadas, que es una de las razones por las que Direct2D usa un espacio de coordenadas de punto flotante.

píxel físico = (dip × PPP) / 96

Para convertir un píxel físico en una DIP, use esta fórmula:

dip = (píxel físico × 96) / PPP

Nota

A partir de Windows 8, puede cambiar el modo de unidad a píxeles en lugar de DIP mediante el método ID2D1DeviceContext::SetUnitMode.

 

Cómo asegurarse de que la aplicación se muestra correctamente en pantallas de valores altos de PPP