
En la configuración de Windows 10 (a partir de la versión 1809), hay una configuración "Reparar escala para aplicaciones" (en Configuración -> Pantalla -> Configuración de escala avanzada), con un interruptor que dice:
Deje que Windows intente arreglar las aplicaciones para que no se vean borrosas
Entiendo que esto cambia la forma en que Windows y las aplicaciones de Windows manejan pantallas de alto DPI, pero ¿qué hace exactamente?
Logré arreglar una aplicación que se comportaba mal activando este interruptor, pero me gustaría entender qué hace exactamente esta configuración, para poder reconocer cualquier problema que pueda causar.
Respuesta1
tl;dr:Los controles de configuraciónEscalado GDI, una técnica específica para escalar la visualización de un programa.
Para comprender lo que hace Windows es necesario comprender cómo un sistema operativo maneja las pantallas gráficas.
Un programa gráfico dibuja sus gráficos, que son formas, texto e imágenes, en una superficie virtual. Cuando llega el momento de mostrar, el sistema operativo traduce esta superficie virtual al dispositivo de destino, que puede ser una pantalla o una impresora. De esta manera, el programa no necesita conocer y adaptarse al medio de visualización, ya que esta parte la maneja el sistema operativo y sus controladores.
Los monitores más nuevos de alta resolución y alto DPI han creado el problema de que la visualización de algunos programas puede ser demasiado pequeña para el usuario, lo que requiere escalamiento. Microsoft ha creado para ello la API para gráficos DPI-Aware, por lo que la visualización del programa se adapta automáticamente, pero sólo unos pocos programas realmente utilizan esta interfaz.
Para los programas que no son compatibles con DPI (que son la mayoría de ellos), Microsoft ha creado mecanismos automáticos para ampliar la pantalla. Su primer mecanismo de este tipo (ya presente en Windows Vista) se basó en algoritmos de cambio de tamaño de imágenes, lo que significa que Windows tomaba la pantalla pintada por el programa y la ampliaba, traduciendo de hecho un píxel dibujado en más de uno. El resultado es el mismo que hacer zoom en una imagen, la imagen es más grande pero perderá calidad y aparecerá borrosa.
El segundo y último intento de Microsoft para resolver el problema (introducido en Windows 10 V1703) es interceptar operaciones gráficas (GDI) mientras el programa dibuja en su superficie virtual. Microsoft se refiere a esto comoEscalado GDI- verDesarrollo de aplicaciones de escritorio de alto DPI en Windows. Por ejemplo, el programa puede escribir texto utilizando la fuente de 12 puntos. Sin embargo, si el objetivo es una pantalla ampliada en un 150%, Windows utilizará una fuente configurada en 18 puntos, lo que proporciona resultados perfectamente legibles. Otras llamadas de dibujo se interceptan de manera similar.
Este método es invasivo y puede fallar o interferir con el programa en algunos casos (ver, por ejemplo,Problemas de escalado de Windows para dispositivos con alto DPI), razón por la cual Windows necesita el permiso del usuario para usarlo. Los permisos se pueden otorgar en todo el sistema (la configuración "Reparar escala para aplicaciones" sobre la que preguntaste), o para cada programa a través de las propiedades del ejecutable (Pestaña "Compatibilidad" / "Cambiar configuración de DPI alto").
Respuesta2
Windows 10 puede hacer zoom en el software y las aplicaciones que se dibujan a través deGDI(incluyendo todas las partes del sistema operativo), escalando todos los elementos vectoriales al porcentaje deseado.
Por ejemplo, establecer una escala del 150% cambiará el tamaño de la ventana de 600x400 px a 900x600 px; Los iconos de 32x32 px en la ventana escalada cambiarán de tamaño a 48x48 px; un botón a 8 px desde arriba y 16 px desde la izquierda se moverá 12 px desde arriba y 24 px desde la izquierda, y las fuentes de 12 puntos se dibujarán como 18 puntos. Establecer una escala del 200 % duplicará los parámetros originales, y así sucesivamente.
Esto preservará el tamaño relativo y la posición de todos los elementos, lo que hará que los elementos sean más fáciles de leer, hacer clic o tocar, por lo que personalizar la configuración de escala puede ser útil de varias maneras: 1) hacer que el sistema y la aplicación sean más legibles en pantallas de alto DPI 2 ) permiten ajustar el tamaño de los elementos para personas con problemas de visión 3) hacen que el sistema sea más táctil ya que el tacto es menos preciso que hacer clic con el mouse y requiere más espacio entre los elementos en los que se puede hacer clic
Este mecanismo de escala (llamado "GDI Scaling") en realidad vuelve a dibujar la salida GDI del software/aplicación en la pantalla, y se introdujo nuevamente con Vista; está ganando terreno en la última década a medida que las pantallas táctiles y de alto DPI se vuelven cada vez más comunes. Complementa el antiguo método de escalado que se remonta a XP, donde la salida gráfica se trataba como una imagen de mapa de bits y se escalaba en consecuencia, lo que hacía que las aplicaciones escaladas parecieran borrosas y claramente distinguibles de la representación nativa con reconocimiento de DPI, es por eso que el nuevo mecanismo se conoce en términos de "Deje que Windows intente arreglar las aplicaciones para que no se vean borrosas".
Desafortunadamente, la escala GDI no ayuda con los gráficos de mapa de bits, por lo que todavía están escalados como mapas de bits; en el ejemplo anterior, un ícono de 32x32 px se convertirá en 48x48 px, pero de todos modos se completará con el mapa de bits mejorado de resolución inferior de 32x32px.
Peor aún, algunos programas pueden comportarse mal de varias maneras impredecibles si los desarrolladores originalmente se basaron en suposiciones que se rompen cuando el sistema modifica GDI sobre la marcha para escalar la salida en la pantalla, por lo que, como función principal al cambiar la configuración de escala, el software antiguo debe ser cuidadoso. probado. Por lo tanto, la escala de GDI se puede controlar mediante la configuración "Reparar escala para aplicaciones".
Respuesta3
Me encontré con este problema recientemente. Agregaría a las soluciones anteriores que esto ayuda a solucionar el escenario en el que su computadora portátil tiene habilitado el escalado y desea ejecutar una aplicación "sin escalar" en su(s) monitor(es) secundario(s).
En este ejemplo, la computadora portátil tiene una pantalla de alta resolución y solo tiene un tamaño de 13 pulgadas, por lo que es necesario escalar para leer las fuentes más pequeñas, pero tengo varios monitores conectados a través de una conexión USB-C que son HD estándar de 24" y no necesitan que se aplique un factor de escala. Al usar la función de escala y configurar la compatibilidad por aplicación-> Cambiar la función de configuración de DPI alta, puedo eliminar la escala de las aplicaciones que normalmente ejecuto en los monitores grandes y dejar funcionales las que uso en la computadora portátil. pero ayuda en mi escenario.