2010-06-10 11 views
8

In pollici, ad es. 21 'monitor. L'app è un'app standard di WinForms.C'è un modo per determinare la dimensione fisica del monitor?

EDIT: Sembra che non ci sia davvero un modo affidabile per ottenere ciò di cui ho bisogno.

+1

Il titolo ha dimenticato di menzionare che l'OP desidera la dimensione fisica dell'immagine del monitor (in pollici), non la risoluzione del desktop in pixel quadrati. –

+0

@Andreas Il tuo suggerimento aggiunto – AngryHacker

+0

Potrei facilmente darti la dimensione dei pixel ma, questo è tutto ... –

risposta

2

Sto pensando di due modi che potrebbero funzionare in condizioni particolari:

  • cercare di ottenere il nome del dell'hardware del monitor. Sul mio sistema dual-monitor, utilizzo un SyncMaster 205BW e un SyncMaster 173T. Questi sono monitor da 20 "e 17". Capisci cosa intendo? Un problema, tuttavia, è che non sono sicuro se è possibile ottenere queste stringhe a livello di codice. Windows sembra ottenere solo SyncMaster: screenres.png.

  • È possibile utilizzare GetDeviceCaps(GetDC(GetDesktopWindow), VERTSIZE) per ottenere "Altezza, in millimetri, della schermata fisica". e allo stesso modo con HORZSIZE e la "larghezza". Ma questo funzionerà solo se hai calibrato il display, credo. Almeno sul mio sistema, i valori sono molto più grandi dell'altezza e della larghezza effettive ...

  • Non ho idea del tuo contesto, ma se la tua app ha davvero bisogno della dimensione fisica del dispositivo di output dell'utente finale perché no chiedere allo lui? Si potrebbe facilmente chiedere la dimensione del monitor durante l'installazione (ad esempio usando l'eccellente Inno Setup) e memorizzare il valore nel registro. Quindi è banale scrivere una procedura GetPhysicalMonitorSize che legge semplicemente il valore dal registro.

1

Se non esiste un modo specifico per .NET, si può sempre utilizzare l'API native di Windows: GetSystemMetrics con SM_CYSCREEN o SM_CXSCREEN.

+0

GetSystemMetrics riporta solo cose come la risoluzione.Voglio le dimensioni del monitor (ad esempio il monitor 21 ') – AngryHacker

+0

@AngryHacker: Oh, sembra molto più difficile ... –

+6

Quello * è * molto più difficile, per valori di 'difficile == impossibile' –

2

App Web o desktop? Tutto si può scoprire la web app è la risoluzione dello schermo del browser, utilizzando 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> 

Per un'applicazione desktop, si esegue questa operazione:

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

Questo non può essere garantita. Windows non può conoscere le dimensioni del monitor a meno che il suo autista non lo interroghi e segnala la risposta a Windows.

Tuttavia, si potrebbe desiderare di provare

SystemInformation.PrimaryMonitorSize 

o GetDeviceCaps(dc, HORZSIZE) e GetDeviceCaps(dc, VERTSIZE) e poi Calulate la piazza sul l'ipotenusa.

Si noti che esiste anche una domanda identica a accepted answer proprio qui su Stack Overflow.

2

si può utilizzare l'EDID nel Registro di sistema per ottenere le dimensioni dello schermo fisico. Il driver del monitor riporta le dimensioni dello schermo fisico su Windows.

Problemi correlati