Я понимаю, что прошло несколько месяцев, но, читая книгу по WPF, я натолкнулся на ответ:
Если используется стандартная настройка Windows DPI (96 точек на дюйм), то каждый независимый от устройства блок соответствуетодин реальный, физический пиксель.
[Physical Unit Size] = [Device-Independent Unit Size] x [System DPI]
= 1/96 inch x 96 dpi
= 1 pixel
Следовательно, 96 пикселей на дюйм при настройках DPI системы Windows.
Однако в действительности это зависит от размера вашего дисплея.
Для 19-дюймового монитора LDC с разрешением 1600 x 1200 используйте теорему Пифагора, которая помогает рассчитать плотность пикселей для монитора:
[Screen DPI] = Math.Sqrt(Math.Pow(1600, 2) + Math.Pow(1200, 2)) / 19
Используя эти данные, я написалнебольшой статический инструмент, который я сейчас храню в своем классе инструментов всех моих проектов:
/// <summary>
/// Calculates the Screen Dots Per Inch of a Display Monitor
/// </summary>
/// <param name="monitorSize">Size, in inches</param>
/// <param name="resolutionWidth">width resolution, in pixels</param>
/// <param name="resolutionHeight">height resolution, in pixels</param>
/// <returns>double presision value indicating the Screen Dots Per Inch</returns>
public static double ScreenDPI(int monitorSize, int resolutionWidth, int resolutionHeight) {
//int resolutionWidth = 1600;
//int resolutionHeight = 1200;
//int monitorSize = 19;
if (0 < monitorSize) {
double screenDpi = Math.Sqrt(Math.Pow(resolutionWidth, 2) + Math.Pow(resolutionHeight, 2)) / monitorSize;
return screenDpi;
}
return 0;
}
Я надеюсь, что другие получат некоторую пользу от этого изящного маленького инструмента.