Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.28;
Скачать: CL | DM;

Вниз

Перевод пикселей в миллиметры   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
15-1190911523
Дима Вид
2007-09-27 20:45
2007.10.28
Оля


9-1162040068
Зм1й
2006-10-28 16:54
2007.10.28
Прозрачность и текстура


15-1190980203
Booka Shade
2007-09-28 15:50
2007.10.28
Клик мышкой


1-1186991430
Adventure
2007-08-13 11:50
2007.10.28
Утечка памяти.....


2-1189885813
vasIZmax
2007-09-15 23:50
2007.10.28
ini-file