2010-06-10 25 views
8

En pulgadas, p. Ej. 21 'monitor. La aplicación es una aplicación WinForms estándar.¿Hay alguna manera de determinar el tamaño físico del monitor?

EDITAR: Parece que realmente no hay una manera confiable de lograr lo que necesito.

+1

El título olvidó mencionar que el OP desea el tamaño físico de la imagen del monitor (en pulgadas), no la resolución del escritorio en píxeles cuadrados. –

+0

@Andreas Tu sugerencia agregada – AngryHacker

+0

Podría darte fácilmente un tamaño de píxel, pero eso es todo ... –

Respuesta

2

estoy pensando en dos formas que podrían funcionar en condiciones especiales:

  • tratar de conseguir el nombre del hardware del monitor. En mi sistema de doble monitor, uso un SyncMaster 205BW y un SyncMaster 173T. Estos son monitores de 20 "y 17". ¿Ves lo que quiero decir? Un problema, sin embargo, es que no estoy seguro de si puede obtener estas cadenas programáticamente. Windows parece que solo obtiene SyncMaster: screenres.png.

  • Puede usar GetDeviceCaps(GetDC(GetDesktopWindow), VERTSIZE) para obtener "Altura, en milímetros, de la pantalla física". y de manera similar con HORZSIZE y el "ancho". Pero esto solo funcionará si ha calibrado su pantalla, creo. Al menos en mi sistema, los valores son mucho más grandes que la altura y el ancho reales ...

  • No tengo idea de su contexto, pero si su aplicación realmente necesita el tamaño físico del dispositivo de salida del usuario final , ¿por qué no preguntar él? Puede solicitar fácilmente el tamaño del monitor durante la instalación (por ejemplo, utilizando la excelente configuración de Inno) y almacenar el valor en el registro. Entonces es trivial escribir un procedimiento GetPhysicalMonitorSize que simplemente lea el valor del registro.

1

Si no hay una forma específica de .NET, siempre puede usar la API nativa de Windows: GetSystemMetrics con SM_CYSCREEN o .

+0

GetSystemMetrics solo trae de vuelta cosas como la resolución. Quiero el tamaño del monitor (por ejemplo, 21 'monitor). – AngryHacker

+0

@AngryHacker: Oh, eso suena mucho más difícil ... –

+6

Eso * es * mucho más difícil, para valores de 'difícil == imposible' –

2

¿Aplicación web o aplicación de escritorio? Todo lo que puede encontrar información sobre la aplicación web es la resolución de la pantalla del navegador, usando javascript:

<script language="javascript"> 

var width = screen.width; 
var height = screen.height; 

if(width < 1280 || height < 1024) 
{ 
    alert("This web page is best viewed with a screen resolution of 1280 by 1024 or higher. Your current resolution is " + width + " by " + height + ". If possible please change your resolution."); 
} 
else 
{ 
    alert("Your screen resolution is pretty big!") 
} 
</script> 

Para una aplicación de escritorio, esto se hace:

MessageBox.Show("Monitor Size:" + 
    SystemInformation.PrimaryMonitorSize); 
5

Esto no se puede garantizar. Windows no puede saber el tamaño del monitor a menos que su controlador lo interrogue e informe la respuesta a Windows.

Sin embargo, es posible que desee probar

SystemInformation.PrimaryMonitorSize 

o GetDeviceCaps(dc, HORZSIZE) y GetDeviceCaps(dc, VERTSIZE) y luego Calulate el cuadrado de la hipotenusa.

Tenga en cuenta que también hay una pregunta accepted answer idéntica aquí en Stack Overflow.

2

Puede usar el EDID en el registro para obtener el tamaño de la pantalla física. El controlador del monitor informa el tamaño de la pantalla física a Windows.

Cuestiones relacionadas