Существует ли способ определить физический размер монитора?

В дюймах, например, 21' мониторе. Приложение является стандартным приложением WinForms.

Править: Это появляется там, действительно не надежный способ выполнить то, в чем я нуждаюсь.

8
задан ThinkingStiff 30 June 2012 в 04:16
поделиться

4 ответа

Я думаю о двух способах, которые могут сработать в особых условиях:

  • Попробуйте узнать название аппаратного обеспечения монитора. В моей системе с двумя мониторами я использую один SyncMaster 205BW и один SyncMaster 173T. Это мониторы с диагональю 20″ и 17″. Понимаете, о чем я? Одна проблема, однако, заключается в том, что я не уверен, можно ли программно получить эти строки. Windows, похоже, получает только SyncMaster: screenres.png.

  • Вы можете использовать GetDeviceCaps(GetDC(GetDesktopWindow), VERTSIZE) для получения "Высоты, в миллиметрах, физического экрана." и аналогично с HORZSIZE и "шириной". Но это будет работать, только если вы откалибровали свой дисплей, я полагаю. По крайней мере, на моей системе, значения намного больше, чем фактическая высота и ширина...

  • Я понятия не имею о вашем контексте, но если вашему приложению действительно нужен физический размер устройства вывода конечного пользователя, почему бы не спросить его? Вы можете легко запросить размер монитора во время настройки (например, используя отличную Inno Setup), и сохранить значение в реестре. Затем тривиально написать процедуру GetPhysicalMonitorSize, которая просто считывает значение из реестра.

2
ответ дан 5 December 2019 в 14:00
поделиться

Веб-приложение или настольное приложение? Все, что вы можете узнать о веб-приложении, - это разрешение экрана браузера, используя 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>

Для настольного приложения вы делаете следующее:

MessageBox.Show( "Monitor Size:" +
   SystemInformation.PrimaryMonitorSize );
2
ответ дан 5 December 2019 в 14:00
поделиться

Если нет способа, специфичного для .NET, вы всегда можете использовать собственный Windows API: GetSystemMetrics ​​с помощью SM_CYSCREEN или SM_CXSCREEN .

1
ответ дан 5 December 2019 в 14:00
поделиться

Это не может быть гарантировано. Windows не может узнать размер монитора, если драйвер не запросит его и не отправит ответ в Windows.

Однако вы можете попробовать

SystemInformation.PrimaryMonitorSize

или GetDeviceCaps (dc, HORZSIZE) и GetDeviceCaps (dc, VERTSIZE) , а затем вычислить квадрат гипотенузы.

Обратите внимание, что есть также принятый ответ на идентичный вопрос прямо здесь, в Stack Overflow.

5
ответ дан 5 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: