Compartir a través de


Escalado de la imagen de escritorio

Este tema solo se aplica a Windows 7 y versiones posteriores, y Windows Server 2008 R2 y versiones posteriores del sistema operativo Windows.

Funcionamiento del escalado

Un llamador puede usar la función SetDisplayConfig Connecting and Configuring Displays (CCD) para escalar la imagen de escritorio al monitor:

  • Si el escritorio y el monitor usan la misma resolución, SetDisplayConfig no es necesario para escalar la imagen de escritorio al monitor. Esta operación SetDisplayConfig se conoce como escalado de identidades.

  • Si la resolución de escritorio y monitor es diferente, SetDisplayConfig aplica uno de los siguientes tipos de escalado. La resolución del monitor se define mediante la estructura DISPLAYCONFIG_TARGET_MODE .

    • Escalado centrado

      El escalado centrado es un modo en el que el escritorio se muestra en el monitor sin escalado alguno. Cuando SetDisplayConfig aplica el escalado centrado, es posible que las bandas negras estén visibles encima y debajo del escritorio. En la ilustración siguiente se muestra el escalado centrado.

      Diagrama que muestra el escalado centrado con bandas negras arriba y debajo del escritorio.

    • Escalado extendido

      El escalado extendido es un modo en el que el escritorio se extiende horizontal y verticalmente en el monitor para asegurarse de que se usa toda la pantalla. Cuando SetDisplayConfig aplica el escalado extendido, no hay bandas negras visibles encima y debajo del escritorio. Sin embargo, el escritorio puede aparecer distorsionado. En la ilustración siguiente se muestra el escalado extendido.

      Diagrama que muestra el escalado extendido con el escritorio que rellena toda la pantalla.

    • Conservación de la relación de aspecto extendido

      El escalado extendido conservando la relación de aspecto es un modo en el que el escritorio se estira horizontal y verticalmente tanto como sea posible manteniendo la relación de aspecto. Cuando SetDisplayConfig aplica el escalado extendido conservando la relación de aspecto, es posible que las bandas negras sean visibles por encima y por debajo o por debajo o a la izquierda y a la derecha del escritorio. Sin embargo, las bandas negras no pueden ser visibles tanto por encima como por debajo y por debajoy a la derecha del escritorio. Dado que se espera que los usuarios prefieran este tipo de escalado, SetDisplayConfig aplica este tipo de escalado como valor predeterminado. En la ilustración siguiente se muestra el escalado extendido conservando la relación de aspecto.

      Diagrama que muestra la reducción de la relación de aspecto con el escalado extendido con bandas negras en el lado o superior y por debajo del escritorio.

El escalado depende de los modos de origen y destino que se usan para una ruta de acceso. Además, el autor de la llamada puede llamar a SetDisplayConfig sin especificar la información del modo de destino (es decir, establecer el parámetro modeInfoArray es opcional y se puede establecer en NULL). Esto significa que el autor de la llamada no puede predecir normalmente si SetDisplayConfig debe realizar cualquier escalado. Además, no existe ninguna API para obtener la lista completa de tipos de escalado que admite el adaptador de gráficos. La función Win32 EnumDisplaySettings devuelve DMDFO_DEFAULT en el miembro dmDisplayFixedOutput de la estructura DEVMODE a la que apunta el parámetro lpDevMode cuando el autor de la llamada solicita los tipos de escalado de Windows 7.

El escalado que pasa un llamador a SetDisplayConfig es una intención de escalado en lugar de una solicitud explícita para realizar una operación de escalado. Si se requiere el escalado (por ejemplo, las resoluciones de origen y destino difieren), SetDisplayConfig usa el escalado que proporciona el autor de la llamada. Si no se admite el escalado proporcionado, SetDisplayConfig usa el escalado predeterminado del adaptador de gráficos. Cuando las resoluciones de origen y destino que pasa el autor de la llamada a SetDisplayConfig son las mismas, SetDisplayConfig siempre establece el escalado de identidades.

Scaling requests (Solicitudes de escalado)

En la tabla siguiente se muestran las distintas solicitudes de escalado setDisplayConfig e identifica la nomenclatura abreviada usada en las tablas que se encuentran en las subsecciones siguientes. Consulte DISPLAYCONFIG_SCALING para obtener definiciones de los valores DISPLAYCONFIG_SCALING_XXX .

Solicitud de escalado Nomenclatura abreviada usada en las tablas siguientes
DISPLAYCONFIG_SCALING_IDENTITY DC_IDENTITY
DISPLAYCONFIG_SCALING_CENTERED DC_CENTERED
DISPLAYCONFIG_SCALING_STRETCHED DC_STRETCHED
DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX DC_ASPECTRATIOCENTEREDMAX
DISPLAYCONFIG_SCALING_CUSTOM DC_CUSTOM
DISPLAYCONFIG_SCALING_PREFERRED DC_PREFERRED
Valor de escalado predeterminado del adaptador. Actualmente, en los sistemas de tableta, el valor predeterminado se ajusta. En sistemas que no son tabletas con adaptadores de gráficos que admiten el modelo de controlador de pantalla de Windows (WDDM), el valor predeterminado lo define el controlador. En sistemas que no son tabletas con adaptadores de gráficos que admiten WDDM con características nuevas para Windows 7, el valor predeterminado es DC_ASPECTRATIOCENTEREDMAX. AdapterDefault
Valor de escalado de la base de datos para los monitores conectados actuales DatabaseValue

Solicitudes de escalado de SetDisplayConfig

En la tabla siguiente se muestran los valores guardados en la base de datos y los valores que se establecen realmente, donde:

  • "Set (same)" y "Store (same)" son los valores set y store cuando el modo de origen resultante y el modo de destino tienen la misma resolución.
  • "Set (different)" y "Store (different)" son los valores establecidos y almacenan cuando el modo de origen resultante y el modo de destino tienen resoluciones diferentes.
Marca de escalado que se pasa a SetDisplayConfig Establecer (mismo) Tienda (igual) Establecer (diferente) Establecer (diferente)
DC_IDENTITY configuración actual no en la base de datos DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_IDENTITY configuración actual en Db DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue
DC_CENTERED DC_IDENTITY DC_CENTERED DC_CENTERED DC_CENTERED
DC_STRETCHED DC_IDENTITY DC_STRETCHED DC_STRETCHED DC_STRETCHED
DC_ASPECTRATIOCENTEREDMAX en WDDM con el controlador de características de Windows 7 DC_IDENTITY DC_ASPRATIOMAX DC_ASPRATIOMAX DC_ASPRATIOMAX
DC_ASPECTRATIOCENTEREDMAX en el controlador WDDM DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_CUSTOM en WDDM con el controlador de características de Windows 7 que admite el escalado personalizado en la ruta de acceso DC_CUSTOM DC_CUSTOM DC_CUSTOM DC_CUSTOM
DC_CUSTOM en WDDM con el controlador de características de Windows 7 que no admite el escalado personalizado en la ruta de acceso DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_CUSTOM en el controlador WDDM DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_PREFERRED configuración actual no en la base de datos DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_PREFERRED configuración actual en Db DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue

Solicitudes de escalado de ChangeDisplaySettingsEx heredadas

En la tabla siguiente se muestra cómo el escalado que un autor de llamada puede pasar a la API ChangeDisplaySettingsEx heredada se asigna al conjunto de escalado, donde:

  • "Set (same)" y "Store (same)" son los valores set y store cuando el modo de origen resultante y el modo de destino tienen la misma resolución.
  • "Set (different)" y "Store (different)" son los valores establecidos y almacenan cuando el modo de origen resultante y el modo de destino tienen resoluciones diferentes.
Marca de escalado pasada a ChangeDisplaySettingsEx Establecer (mismo) Tienda (igual) Establecer (diferente) Establecer (diferente)
DMDFO_DEFAULT con la configuración actual no en la base de datos CCD DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DMDFO_DEFAULT con la configuración actual en la base de datos CCD DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue
DMDFO_STRETCH DC_IDENTITY DC_STRETCHED DC_STRETCHED DC_STRETCHED
DMDFO_CENTER DC_IDENTITY DC_CENTERED DC_CENTERED DC_CENTERED
DM_DISPLAYFIXEDOUTPUT no establecido, la configuración actual no está en la base de datos CCD DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DM_DISPLAYFIXEDOUTPUT no establecido, configuración actual en la base de datos CCD DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue

Traducción de escalado de EnumDisplaySettings heredada

En la tabla siguiente se muestra cómo se traduce y devuelve el escalado de configuración de visualización de EnumDisplaySettings.

Escalado activo actual Valores de escalado de GDI devueltos de EnumDisplaySettings (ENUM_CURRENT_SETTINGS) heredados
DC_IDENTITY DMDFO_DEFAULT
DC_CENTERED DMDFO_CENTER
DC_STRETCHED DMDFO_STRETCH
DC_ASPRATIOMAX DMDFO_DEFAULT
DC_CUSTOM DMDFO_DEFAULT
DC_PREFERRED DMDFO_DEFAULT

Juegos y escalado de DirectX

Los entornos de ejecución de Microsoft DirectX 9L y anteriores requieren que las aplicaciones siempre llamen a la función ChangeDisplaySettingsEx sin DM_DISPLAYFIXEDOUTPUT establecido en el miembro dmFields de la estructura DEVMODE a la que apunta el parámetro lpDevMode . Los entornos de ejecución de DirectX 10 y versiones posteriores permiten a las aplicaciones elegir el escalado que esas aplicaciones pasan a ChangeDisplaySettingsEx. En la tabla siguiente se muestra la asignación de valores de escalado a marcas de escalado que se pasan a ChangeDisplaySettingsEx.

Valor de escalado de la cadena de volteo DXGI Marcas de escalado que se pasan a ChangeDisplaySettingsEx
DXGI_MODE_SCALING_UNSPECIFIED DMDFO_DEFAULT, DMDFO_CENTER o DMDFO_STRETCH. El escalado que usan las aplicaciones depende de varios factores, que incluyen el escalado de escritorio actual y la lista de modos que expone el controlador.
DXGI_MODE_SCALING_CENTERED DMDFO_CENTER
DXGI_MODE_SCALING_STRETCHED DMDFO_STRETCH

Al usar esta información en combinación con las tablas de escalado anteriores, puede determinar el escalado esperado desde una aplicación DirectX.