Я понимаю, что прошло несколько месяцев, но, читая книгу по WPF, я наткнулся на ответ:
При использовании стандартной настройки DPI Windows (96 dpi) каждая независимая от устройства единица соответствует одному реальному физическому пикселю.
[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;
}
Я надеюсь, что другие получат некоторую пользу от этого изящного маленького инструмента.
person
jp2code
schedule
17.05.2011
PrintPageEventArgs
в заголовке. - person jp2code   schedule 25.02.2011