2010-11-03 10 views
11

¿Alguien sabe qué unidades de medida usa Silverlight/WFP? Por ejemplo, si creo un nuevo botón y establezco su altura en 150, ¿son 150 píxeles? ¿puntos? milímetros?¿Qué unidades de medida usan Silverlight y WPF?

Diseño todas mis aplicaciones en Adobe Illustrator antes de proceder con el código, y aunque intento configurar todo con las dimensiones en mi archivo de Illustrator, la aplicación de Silverlight suele ser más grande.

Respuesta

16

la documentación de MSDN indica que la propiedad FrameworkElement.Height (para Silverlight) se refiere a:

La altura en píxeles del objeto

Sin embargo, for WPF se refiere a:

una unidad independiente del dispositivo (1 pulgada/96a) de medición

lo tanto, para responder a su pregunta ... píxeles para Silverlight, unidades independientes del dispositivo para WPF.

+0

No píxeles. Unidades independientes del dispositivo. –

+0

Voy a tener que jugar con mi configuración en Illustrator. He estado usando píxeles para todo menos texto. Aquí hay más información sobre WPF vs Silverlight http://msdn.microsoft.com/en-us/library/cc903925(VS.95).aspx – Quentamia

+1

FYI: Microsoft usa 96 ppi. Adobe Illustrator usa 72 ppi. – Quentamia

1

Son Unidades independientes del dispositivo.

Puede encontrar explicaciones más detalladas here.

+0

Not Independet. Independiente. – Grozz

+0

Gracias. Hice la corrección. –

1

La documentación se refiere a los píxeles, sin embargo, estos son píxeles donde hay 96 píxeles por pulgada. Una línea de Ancho 96 cuando se visualiza en una pantalla de 120 DPI será de 120 píxeles reales del dispositivo. De manera similar, una línea dibujada en una salida de impresora que tiene 600 DPI tendrá 600 píxeles de longitud.

24

Aunque en teoría, 1 unidad en WPF es 1/96th de una pulgada, que no es el caso en la práctica.

Por lo general, es cierto al imprimir. Pero rara vez es verdad en la pantalla. La razón de esto es que Windows casi siempre conoce la verdadera resolución de una impresora, pero casi nunca conoce la verdadera resolución de una pantalla.

Por ejemplo, tengo tres pantallas conectadas a mi computadora. Windows cree que todos tienen una resolución de 96 píxeles por pulgada. En realidad, no es así. Dos de ellos tienen una resolución de 101 píxeles por pulgada, y uno tiene una resolución de 94 píxeles por pulgada. (Porque Windows no tiene forma de trabajar las verdaderas resoluciones por sí mismo, y no lo he dicho. La ficción de que todas tienen el mismo tamaño de píxel está cerca de la verdad, y resulta ser una ficción conveniente.)

Así que cuando creo, por ejemplo, un rectángulo en WPF con ancho y alto ambos establecidos en 96, el tamaño del rectángulo depende de la pantalla en la que aparece. Windows cree que las 3 pantallas tienen una resolución de 96 píxeles por pulgada, por lo que hará que el rectángulo tenga 96 píxeles de alto y ancho sin importar en qué pantalla aparezca. Eso hará que parezca 0.95 pulgadas de alto en dos de las pantallas, y 1.02 pulgadas de alto en el tercero.

Por lo tanto, en la práctica, eso significa que las unidades en WPF en mi computadora son de 1/100 de una pulgada o de 1/94 de pulgada en la práctica. (Es decir, en la práctica, el tamaño de 1 unidad en WPF es exactamente del tamaño de 1 píxel en mi configuración particular, sin importar qué tan grandes sean los píxeles.)

Podría cambiar eso. Podría reconfigurar Windows. Podría decir la resolución real de las 3 pantallas, en cuyo caso coincidirían los tamaños de unidad nominal y real de WPF. O podría mentir: podría afirmar que tengo pantallas de 200 píxeles por pulgada, en cuyo caso todo sería masivo ...

El problema básico aquí es que no hay una forma estándar para que la computadora descubra el tamaño real de los píxeles físicos en la pantalla, y muy pocas personas se molestan en configurarlo a mano. (Y de hecho, puede causar problemas configurándolo "correctamente", porque una gran cantidad de software no se comporta correctamente cuando lo hace). Por lo tanto, la mayoría de las computadoras con Windows no informan los tamaños de píxeles físicos correctamente a WPF; pueden hacerlo ". t porque no saben.

En consecuencia, no hay una respuesta confiable a la pregunta: 1 unidad en WPF podría ser prácticamente cualquier cosa en la pantalla. (En la práctica, la mayoría de las veces, resulta ser 1 píxel, simplemente porque si no le dices a Windows nada más, de manera predeterminada asume que tus pantallas tienen píxeles que tienen 1/96 de pulgada de alto, que es lo mismo que 1 unidad WPF. Y para la mayoría de las pantallas de escritorio, es bastante probable que sea una buena suposición. Pero esto no es universal. En los sistemas configurados con lo que se solía llamar 'fuentes grandes', por ejemplo, encontrarás una resolución de pantalla nominal diferente, y 1 unidad WPF corresponderá a un poco más de 1 píxel físico - aproximadamente 1.2, de hecho.)

Con las impresoras, todo es mucho más predecible. Las impresoras son invariablemente capaces de informar sus resoluciones correctamente. Entonces, si imprime algo que tiene 96 unidades de WPF de alto, puede estar seguro de que tendrá 1 pulgada de alto.

+0

Buena descripción. Tengo una conexión de doble pantalla con una computadora portátil. La computadora portátil es un Vaio VPCF2 con 134 píxeles físicos por pulgada. El monitor externo es un HP 2310m con 95.7 ppi. Si configuro un ancho de Etiqueta en 96, aparece como 1.25 "en el HP. Si lo configuro en 134, aparece como 1.25" en el Vaio. Así que tengo que escalar mi ppi esperado por 0.8 para que aparezca exactamente 1 "en mi monitor. Y eso depende del monitor que espero que muestre. Pero en realidad, realmente no me importa, entonces Voy con 96 después de todo como "lo suficientemente cerca". – cod3monk3y

Cuestiones relacionadas