Для еще более надежной реализации вы должны рассчитать факторы DPI в вашей системе и работать с этими факторами. Нормальное значение DPI - 96, но некоторые мониторы могут иметь разные значения. Предположим, что ваш код работает на мониторе, значение DPI которого отличается от значения 96. Рассмотрим этот код:
private static void CalculateDpiFactors()
{
Window MainWindow = Application.Current.MainWindow;
PresentationSource MainWindowPresentationSource = PresentationSource.FromVisual(MainWindow);
Matrix m = MainWindowPresentationSource.CompositionTarget.TransformToDevice;
thisDpiWidthFactor = m.M11;
thisDpiHeightFactor = m.M22;
}
Затем вы можете использовать эти соотношения для получения окончательных значений:
CalculateDpiFactors();
double ScreenHeight = SystemParameters.PrimaryScreenHeight * thisDpiHeightFactor;
double ScreenWidth = SystemParameters.PrimaryScreenWidth * thisDpiWidthFactor;
Значения ScreenHeight и ScreenWidth должны соответствовать тому, что вы видите в окне «Свойства» вашего монитора.