Para el tamaño de pantalla, querrá Screen
.PrimaryScreen.Bounds.Size
(o Screen.GetBounds(myform)
).
Si desea que el ppp, utilice la DpiX y DpiY propiedades de Graphics:
PointF dpi = PointF.Empty;
using(Graphics g = this.CreateGraphics()){
dpi.X = g.DpiX;
dpi.Y = g.DpiY;
}
Oh, espera! ¿Querías real, sostener una regla hasta el monitor y medir, tamaño? No. No es posible usar cualquiera servicios del sistema operativo. El sistema operativo no conoce las dimensiones reales del monitor ni cómo lo calibró el usuario. Parte de esta información es teóricamente detectable, pero no es lo suficientemente determinista para que el sistema operativo la use de manera confiable, por lo que no es así.
Como solución alternativa, puede intentar un par de cosas.
- Puede intentar consultar la cadena de visualización del dispositivo de monitor instalado (no estoy seguro de cómo hacerlo) y ver si puede analizar un tamaño razonable de eso. Por ejemplo, el monitor podría ser un "ValueBin E17p", y usted podría deducir que es un monitor de 17 ". Por supuesto, esta cadena de pantalla es probable que sea" Plug and Play Monitor ". Este esquema es bastante incompleto en el mejor.
- se podría pedir el usuario lo monitor de tamaño que tienen. Tal sabrán.
Una vez que sepa (o pensar sabes) tamaño de la diagonal del monitor, necesita encontrar su relación de aspecto físico.Nuevamente, un par de cosas:
- Suponga que la relación de aspecto de píxeles actual coincide con la relación de aspecto físico del monitor. Esto supone que (A) el usuario ha elegido una resolución que es ideal para su monitor, y que (B) el monitor tiene píxeles cuadrados. No sé de un monitor de computadora actual orientado al consumidor que no tenga píxeles cuadrados, pero sí lo hicieron los más antiguos y los más nuevos sí.
- Pregunta al usuario. Tal vez lo sabrán.
Una vez que sabe (o cree sabes) lo que el tamaño diagonal de la pantalla y relación de aspecto físico son, entonces se puede calcular la anchura y la altura física. Un + B = C , por lo que algunos cálculos le dará a usted bien:
Si has descubierto que es un monitor de 17" , y su resolución actual es 1280 x 1024:
+ 1024 = 2686976
Sqrt (2686976) = 1639,1998047828092637409837247032
17" * 1280/1639,2 = 13,274768179599804782820888238165"
17" * 10 24/1639.2 = 10.619814543679843826256710590532 "
Esto pone el ancho físico en 13.27" y la altura física en 10.62 ". Esto hace que los píxeles 13.27 "/ 1280 = 10.62"/1024 = 0.01037 "o alrededor de 0.263 mm.
Por supuesto, todo esto no es válido si el usuario no tiene una resolución adecuada, el monitor tiene una apariencia absurda. píxeles cuadrados, o es un monitor analógico más antiguo y los controles no están ajustados correctamente para que la pantalla llene toda la pantalla física. O peor, podría ser un proyector.
Al final, es posible que no funcione una etapa de calibración donde se tiene el usuario realidad mantener una regla hasta la pantalla, y medir el tamaño de algo para usted, usted podría:.
- Haga que el usuario haga clic con el mouse en dos puntos separados por una pulgada (o un centímetro).
- Dibuja un cuadro en la pantalla y haz que el usuario presione las flechas hacia arriba y hacia abajo para ajustar su altura, y las flechas hacia la izquierda y derecha para ajustar su ancho, hasta que el cuadro tenga exactamente una pulgada (o regla.
- Dibuje un cuadro en la pantalla y haga que el usuario le diga cuántas pulgadas/centímetros hay en cada dimensión.
No importa lo que haces, no esperan que sus resultados sean 100% exacto. Hay demasiados factores en juego para que usted (o el usuario) consiga que esto sea exactamente correcto, todo el tiempo.
Tenga en cuenta que 96 ppp es generalmente bastante cerca de para precisar. Los píxeles modernos en las pantallas no proyectadas tienden a ser de aproximadamente 0,25 mm, más o menos, por lo que generalmente termina con aproximadamente 100 píxeles físicos por pulgada, más o menos, si el monitor está configurado en su resolución original.(Por supuesto, esta es una gran generalización y no se aplica a todos los monitores. Eee PC, por ejemplo, tiene píxeles de aproximadamente 0,19 mm de tamaño, si recuerdo las especificaciones correctamente.)
Esto parece que sólo se pone lo ventanas tiene el dpi a establecer, que generalmente será 96 ppp independientemente del tamaño de pantalla y resolución. –
Esto es lo que devolverá la instancia de Graphics (ver la respuesta de P Daddy). Sin necesidad de P/Invoke. –