ventanas texto tamaño otros letras letra las iconos hacer grande escritorio elementos como cambiar aumentar aplicaciones c# .net winforms windows-7 cjk

c# - texto - como hacer letra grande en windows 10



Detecta el tamaño de letra de Windows(100%, 125%, 150%) (2)

Creé una aplicación que funciona perfectamente hasta que el usuario selecciona 125% o 150%. Rompería mi aplicación. Más tarde encontré una forma de encontrar el tamaño de letra al detectar el DPI.

Esto funcionó de maravilla hasta que las personas con versiones en chino de Windows 7 comenzaron a usar mi aplicación. La aplicación completa se rompe en las ventanas chinas 7. Por lo que puedo decir (no puedo probarlo realmente porque solo tengo la versión en inglés y la instalación los paquetes de idioma no causa el problema) Los caracteres chinos están causando un DPI extraño que rompe mi aplicación.

mi código actual funciona así:

if (dpi.DpiX == 120) //For 125% fonts { //Resize form and set default font to correct problems } else if (dpi.DpiX == 96) //For 100 and 150% fonts { //Resize form and set default font to correct problems }

En las versiones en inglés de Windows 7 que funciona muy bien, pero de alguna manera las versiones chinas se saltan con esto, y la forma se destruye a sí misma, con controles que ni siquiera aparecen, letra muy grande y empujando el problema, cuadros de imagen que se mueven.

Entonces, ¿cuál es una buena manera de detectar la escala de fuente de Windows (100%, 125% y 150%) sin detectar API? Necesito algo sólido que funcione en todos los sistemas operativos e idiomas de Windows 7.


La forma correcta de manejar los ajustes variables de DPI no es detectarlos y ajustar los tamaños de sus controles manualmente en una declaración de switch (para empezar, hay muchas más posibilidades que las que muestra en su ejemplo de instrucción if ).

En su lugar, debe establecer la propiedad AutoScaleMode de su formulario en AutoScaleMode.Dpi y dejar que el marco se ocupe de esto por usted.

Agregue el siguiente código al constructor de su formulario (o establezca esta propiedad en el momento del diseño):

this.AutoScaleMode = AutoScaleMode.Dpi;

Aunque es posible que prefiera usar AutoScaleMode.Font . Para obtener más información sobre la escala automática, consulte la documentación de MSDN .