Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El escalado automático permite que un formulario y sus controles, diseñados en una máquina con una determinada resolución de pantalla o fuente, se muestren adecuadamente en otra máquina con una resolución de pantalla o fuente diferente. Garantiza que el formulario y sus controles cambien de tamaño de forma inteligente para ser coherentes con las ventanas nativas y otras aplicaciones en las máquinas de los usuarios y otros desarrolladores. El escalado automático y los estilos visuales permiten a las aplicaciones de Windows Forms mantener una apariencia coherente en comparación con las aplicaciones nativas de Windows en el equipo de cada usuario.
En su mayor parte, el escalado automático funciona según lo previsto en Windows Forms. Sin embargo, los cambios en la combinación de fuentes pueden ser problemáticos. Para obtener un ejemplo de cómo resolver esto, vea Cómo: Responder a los cambios de esquema de fuentes en una aplicación de Windows Forms.
Necesidad de escalado automático
Sin escalado automático, una aplicación diseñada para una resolución de pantalla o fuente aparecerá demasiado pequeña o demasiado grande cuando se cambie esa resolución o fuente. Por ejemplo, si la aplicación está diseñada con Tahoma 9 punto como línea de base, sin ajuste aparecerá demasiado pequeño si se ejecuta en una máquina donde la fuente del sistema es Tahoma 12 punto. Los elementos de texto, como títulos, menús, contenidos de cuadros de texto, etc., se representarán de menor tamaño que en otras aplicaciones. Además, el tamaño de los elementos de la interfaz de usuario (UI) que contienen texto, como la barra de título, los menús y muchos controles dependen de la fuente usada. En este ejemplo, estos elementos también aparecerán relativamente más pequeños.
Una situación análoga se produce cuando una aplicación está diseñada para una determinada resolución de pantalla. La resolución más común es de 96 puntos por pulgada (PPP), que es igual a 100% escala de pantalla, pero las pantallas de mayor resolución que admiten 125%, 150%, 200% (que respectivamente son iguales a 120, 144 y 192 PPP) y superiores se están volviendo más comunes. Sin ajuste, una aplicación, especialmente una basada en gráficos, diseñada para una resolución aparecerá demasiado grande o demasiado pequeña cuando se ejecute en otra resolución.
El escalado automático busca solucionar estos problemas al cambiar automáticamente el tamaño del formulario y sus controles secundarios según el tamaño de fuente relativo o la resolución de pantalla. El sistema operativo Windows admite el escalado automático de cuadros de diálogo mediante una unidad de medida relativa denominada unidades de diálogo. Una unidad de diálogo se basa en la fuente del sistema y su relación con píxeles se puede determinar a través de la función GetDialogBaseUnitsdel SDK de Win32 . Cuando un usuario cambia el tema usado por Windows, todos los cuadros de diálogo se ajustan automáticamente en consecuencia. Además, Windows Forms admite el escalado automático según la fuente predeterminada del sistema o la resolución de pantalla. Opcionalmente, el escalado automático se puede deshabilitar en una aplicación.
Precaución
No se admiten mezclas arbitrarias de DPI y modos de escalado de fuentes. Aunque puede escalar un control de usuario mediante un modo (por ejemplo, PPP) y colocarlo en un formulario con otro modo (Fuente) sin problemas, mezclar un formulario base en un modo y un formulario derivado en otro puede provocar resultados inesperados.
Escalado automático en acción
Windows Forms usa la siguiente lógica para escalar automáticamente formularios y su contenido:
En tiempo de diseño, cada ContainerControl guarda el modo de escala y la resolución actual en AutoScaleMode y AutoScaleDimensions, respectivamente.
En tiempo de ejecución, la resolución real se almacena en la CurrentAutoScaleDimensions propiedad . La AutoScaleFactor propiedad calcula dinámicamente la relación entre la resolución de escalado en tiempo de ejecución y tiempo de diseño.
Cuando se carga el formulario, si los valores de CurrentAutoScaleDimensions y AutoScaleDimensions son diferentes, se llama al método PerformAutoScale para escalar el control y sus elementos secundarios. Este método suspende el diseño y llama al Scale método para realizar el escalado real. Después, el valor de AutoScaleDimensions se actualiza para evitar el escalado progresivo.
PerformAutoScale también se invoca automáticamente en las situaciones siguientes:
En respuesta al evento OnFontChanged si el modo de escalado es Font.
Cuando se reanuda el diseño del control de contenedor y se detecta un cambio en las propiedades AutoScaleDimensions o AutoScaleMode.
Como se indicó anteriormente, cuando se escala un elemento primario ContainerControl . Cada control de contenedor es responsable de escalar sus elementos secundarios mediante sus propios factores de escalado y no el de su contenedor padre.
Los controles secundarios pueden modificar su comportamiento de escalado a través de varios medios:
La propiedad ScaleChildren se puede sobrescribir para determinar si los controles secundarios deben escalarse o no.
El GetScaledBounds método se puede invalidar para ajustar los límites a los que se escala el control, pero no a la lógica de escalado.
El ScaleControl método se puede invalidar para cambiar la lógica de escalado del control actual.
Consulte también
.NET Desktop feedback