Форум: "WinAPI";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];
ВнизПеревод пикселей в миллиметры Найти похожие ветки
← →
Angakok © (2007-04-26 22:25) [0]Как осуществить перевод экранных пикселей в реальные миллиметры ?
Пробовал:
[b]1. [/b]
Вычисляю число пикселей в миллиметре по X и по Y:
[code]
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;
[/code]
Но такой вариант дает весьма неточные значения, которые с увеличением значения отображаемой величины, очень сильно искажаются.
[b]2. [/b]
Есть свойство класса TScreen - PixelsPerInch, которое дает число пикселей в логическом дюйме по вертикали. Но, очевидно, этого недостаточно.
Каким еще образом можно решить эту проблему, получив при этом более или менее приемлемые данные ?
← →
McSimm © (2007-04-26 22:57) [1]
> Каким еще образом можно решить эту проблему, получив при
> этом более или менее приемлемые данные ?
Включить в программу мастер для калибровки
← →
Eraser © (2007-04-26 23:14) [2]> [0] Angakok © (26.04.07 22:25)
> Как осуществить перевод экранных пикселей в реальные миллиметры
> ?
а для чего такая задача?
← →
Angakok © (2007-04-27 00:38) [3]
> McSimm © (26.04.07 22:57) [1]
> Включить в программу мастер для калибровки
То есть вывести линию, длину которой можно менять, и предложить пользователю измерить ее линейкой руками на мониторе, и зафиксировать "эталон", например, 10 мм ?
> Eraser © (26.04.07 23:14) [2]
> а для чего такая задача?
Мне нужно будет использовать размеры объекта для расчета. То есть, например есть квадрат 20*20 пикселей. Пользователь задает размеры в миллиметрах, то есть для него это должно быть 20*20 мм.
Я использую компоненты FlexGraphics для работы с векторной графикой. Там есть масштабный коэффициент PixelScaleFactor. По умолчанию для него задано значение 1000. Это означает, что 1 пиксел на экране при масштабе 100% будет равен логическим единицам. То есть, для того, чтобы отобразить квадрат в 10 пикселов, размеры его сторон должны равняться 10*1000=10000 единицам. Так вот, минимальное значение PixelScaleFactor может быть 1 (так как целое). То есть получается, 1 пиксел = 1 мм. Но это не годится, так как получается что, например, линия длиной в 80 пикселов(то есть для пользователя тогда 80 мм) на экране выглядит в четверо меньше. То есть, придется самому вручную пересчитывать пиксели в миллиметры.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.049 c