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.
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.
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.
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.