Как осуществить перевод экранных пикселей в реальные миллиметры ?
Пробовал:
1.
Вычисляю число пикселей в миллиметре по X и по Y:
HorResol,VertResol,HorScWidth,VertScHeight: Integer;
PixXFact,PixYFact: Double;
...
HorResol := GetDeviceCaps(GetDC(HWND(Nil)),HORZRES);
VertResol := GetDeviceCaps(GetDC(HWND(Nil)),VERTRES);
HorScWidth := GetDeviceCaps(GetDC(HWND(Nil)),HORZSIZE);
VertScHeight := GetDeviceCaps(GetDC(HWND(Nil)),VERTSIZE);
PixXFact := HorResol/HorScWidth;
PixYFact := VertResol/VertScHeight;
Но такой вариант дает весьма неточные значения, которые с увеличением значения отображаемой величины, очень сильно искажаются.
2.
Есть свойство класса TScreen — PixelsPerInch, которое дает число пикселей в логическом дюйме по вертикали. Но, очевидно, этого недостаточно.
Каким еще образом можно решить эту проблему, получив при этом более или менее приемлемые данные ?