en pouces, par ex. 21 'moniteur. L'application est une application WinForms standard. P>
Edit: Il apparaît là-bas n'est vraiment pas un moyen fiable d'accomplir ce dont j'ai besoin. P>
5 Réponses :
S'il n'y a pas de manière spécifique à laNette, vous pouvez toujours utiliser l'API Windows natif: getSystemmetrics code>
avec sm_cyscreen code> ou
sm_cxcreen code>. P>.
GetSystemmetrics ne rapporte que des choses comme la résolution. Je veux la taille du moniteur (par exemple 21 ').
Que est i> beaucoup plus difficile, pour les valeurs de difficiles == impossible code>
application Web ou application de bureau? Tout ce que vous pouvez trouver sur l'application Web est la résolution de l'écran du navigateur, à l'aide de JavaScript: pour une application de bureau, vous faites ceci: p> MessageBox.Show( "Monitor Size:" +
SystemInformation.PrimaryMonitorSize );
Cela ne peut pas être garanti. Windows ne peut pas connaître la taille du moniteur à moins que son pilote l'interroge et signale la réponse à Windows.
Cependant, vous voudrez peut-être essayer p> ou Notez qu'il y a aussi un à une question identique ici sur le débordement de pile. p> p> getDevicecaps (DC, Horzsize) code> et
getDevicecaps (CC, VERTSIZE) CODE> puis Calulez le carré sur l'hypoténuse. P>
Je pense à deux façons de travailler dans des conditions spéciales: p>
Essayez d'obtenir le nom du matériel du moniteur. Sur mon système Dual-Monitor, j'utilise un syncmaster 205bw et un SyncMaster 173T. Ce sont des moniteurs de 20 "et 17". Tu vois ce que je veux dire? Un problème, cependant, est que je ne suis pas sûr que vous pouvez obtenir ces chaînes de manière programmatique. Windows semble obtenir uniquement SyncMaster: SCRIPRES.PNG . P> LI>
Vous pouvez utiliser Je n'ai aucune idée de votre contexte, mais si votre application a vraiment besoin de la taille physique du périphérique de sortie de l'utilisateur final, pourquoi pas demander em> lui? Vous pouvez facilement demander la taille du moniteur lors de la configuration (par exemple, à l'aide de l'excellent configuration Inno) et stockez la valeur dans le registre. Ensuite, il est trivial d'écrire une procédure GetDevicecaps (Getdc (getdesktopwindow), Vertsize) code>
pour obtenir la hauteur de la taille, en millimètres, de l'écran physique. " et de même avec Horzsize code> et la "largeur". Mais cela ne fonctionnera que si vous avez calibré votre écran, je crois. Au moins sur mon système, les valeurs sont beaucoup plus grandes que la hauteur et la largeur réelles ... p> li>
getphysicalmonititorsize code> qui lit simplement la valeur du registre. P> li>
ul>
Vous pouvez utiliser l'EDID dans le registre pour obtenir la taille de l'écran physique. Le pilote du moniteur rapporte la taille d'écran physique à Windows. P>
Le titre a oublié de mentionner que l'OP veut la taille physique de l'image du moniteur (en pouces), pas la résolution de bureau en sq. Pixels.
@Andreas votre suggestion ajoutée
Je pourrais facilement vous donner une taille de pixel mais c'est tout ...
Et si vous utilisez un projecteur? Ensuite, la taille de l'écran dépend de la distance entre le projecteur et l'écran de visualisation. Comment pouvez-vous préciser cela?
Dupliqué possible de C #: obtenir une taille de bureau complète?
@Donal Fellows: Non, c'est une question totalement différente. Cela concerne la taille physique du moniteur ...
Vous devez faire attention, certains moniteurs âgés signalent leur taille, y compris la lunette! :-( Je pense que cela sera difficile, sinon impossible sans demander à l'utilisateur ou exécuter une sorte d'étalonnage.
Cette question est un bit mal tagué. C'est vraiment un problème de langue-agnostique.
@Andreas: Certains moniteurs mentent juste à propos de leur taille, et les fenêtres (bien, au moins pendant longtemps) tendent à assumer une densité de pixels fixe. Peut-être que les choses sont meilleures maintenant, mais je pouvais croire que les choses sont toujours dans cet état désolé ...
Existe-t-il un appel pour obtenir la résolution de l'écran dans DPI?