una tiene son saber resolucion que pixeles para optima mejor megapixeles impresion imagenes imagen cuantos como .net wpf winforms user-interface fonts

.net - tiene - que es mejor 300 ppp o 600 ppp



Interfaz de usuario independiente del tamaño de fuente: ¿todo se rompió cuando cambié a 120 ppp? (3)

Así que estaba leyendo las pautas de UI de Windows Vista a las que se vinculó alguien en otra pregunta, y mencionaron que usted debería poder sobrevivir a un cambio a 120 DPI. Bueno, enciendo mi práctico VM con mi aplicación instalada, y ¿qué obtenemos ... AAAAGH !!! Error de interfaz de usuario masiva!

Todo está desordenado: algunos contenedores no son lo suficientemente grandes para su texto; algunos controles que estaban colocados "uno al lado del otro" ahora están todos aplastados / separados; algunos botones no son lo suficientemente altos; mis columnas ListView no son lo suficientemente amplias ... eeek.

Parece que un enfoque completamente diferente está en orden. Mi anterior era básicamente el uso del diseñador VS2008 Windows Forms para crear, supongo, un diseño basado en píxeles. Puedo ver que si me quedara con Windows Forms, FlowLayoutPanel sería útil, aunque los encontré bastante inflexibles en el pasado. Tampoco resuelven el problema donde los contenedores (por ejemplo, la forma en sí) no son lo suficientemente grandes; presumiblemente hay una manera de hacer eso? Tal vez esa propiedad AutoSize ?

Esto también podría ser una señal de que es hora de enviar un barco a WPF; Tengo la impresión de que está específicamente diseñado para este tipo de cosas.

El problema básico parece venir a estos:

  • Si tuviera que seguir con Windows Forms, ¿cuáles son todos los trucos para lograr un diseño independiente del tamaño de la fuente que pueda sobrevivir al usuario ampliando sus fuentes, o configurando la pantalla en 120 DPI?
  • ¿WPF tiene ventajas significativas aquí, y si es así, puede intentar convencerme de que vale la pena el cambio?
  • ¿Hay alguna "mejores prácticas" generales para diseños independientes del tamaño de fuente, ya sea en la pila .NET o en general?

Si tuviera que seguir con Windows Forms, ¿cuáles son todos los trucos para lograr un diseño independiente del tamaño de la fuente que pueda sobrevivir al usuario ampliando sus fuentes, o configurando la pantalla en 120 DPI?

Por un lado, AutoScaleMode puede ser tu amigo.


Conozca cómo funcionan las propiedades Anchor y Dock en sus controles, deje todo lo que pueda AutoSize solo, y use TableLayoutPanel que pueda.

Si hace estas tres cosas, obtendrá gran parte de la experiencia de diseño de WPF en Windows Forms. Un TableLayoutPanel bien diseñado hará todo lo posible para ajustar el tamaño de los controles para que se ajusten adecuadamente a la forma. Combinado con los controles de tamaño automático , acoplamiento y AutoScaleMode mencionado por Soeren Kuklau, debería poder hacer algo que se adapte bien. De lo contrario, su formulario podría tener demasiados controles sobre él; Considere dividirlo en páginas con pestañas, cajas de herramientas flotantes o algún otro espacio.

En WPF es mucho más fácil porque el concepto de controles de auto-tamaño está incorporado; en la mayoría de los casos, si está colocando un elemento WPF utilizando un par de coordenadas, lo está haciendo mal. Aún así, no puede cambiar el hecho de que a resoluciones más bajas no requiere mucho texto de 120 ppp para llenar la pantalla. A veces, el problema no es su diseño, sino un intento de poner demasiado en un espacio pequeño.


En general, el problema consiste en usar dos "constantes" diferentes para el diseño del formulario, y luego cambiar una de esas constantes sin cambiar el otro.

Está utilizando píxeles para sus entidades de formulario y puntos (básicamente pulgadas) para especificar el tamaño de fuente. Los píxeles y los puntos están relacionados por DPI, por lo que debe cambiar el DPI y de repente los valores fijos de su píxel no se alinean con los valores fijos de su punto.

Existen paquetes y clases para esto, pero al final del día debe elegir una unidad u otra, o escalar una de las unidades de acuerdo con la constante cambiante.

Personalmente, cambiaría las entidades en el formulario a pulgadas. No soy una persona C #, por lo que no sé si esto es compatible de forma nativa, o si tiene que realizar un tamaño de forma dinámica en el inicio de la aplicación.

Si tiene que hacer esto en su software, continúe y ajuste todo normalmente (por ejemplo, a su 96 DPI habitual).

Cuando se inicia la aplicación, verifique que el sistema esté en 96 DPI antes de mostrar sus formularios. Si lo es, genial. De lo contrario, establezca una variable con el factor de corrección, escale y traduzca (modifique la ubicación y el tamaño) de cada entidad antes de mostrar el formulario.

Lo último, sin embargo, sería especificar todo en pulgadas o puntos (un punto es 1/72 de pulgada) y dejar que el SO se encargue de eso. Es posible que deba ocuparse de casos de esquina (una pantalla exterior con un DPI correctamente configurado mostraría su aplicación en unos pocos píxeles ...)