Главная страница
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.017 c
11-1175014534
ElectriC
2007-03-27 20:55
2007.10.28
Application.Title


15-1191529956
sdubaruhnul
2007-10-05 00:32
2007.10.28
Так кто-нибудь объяснит, почему ветки про спутник закрывают?


15-1191366240
ERGef
2007-10-03 03:04
2007.10.28
Sun ONE Studio ME как создать jar и jad файлы??


5-1161855063
DevilDevil
2006-10-26 13:31
2007.10.28
Parent = TPanel


4-1177611920
Angakok
2007-04-26 22:25
2007.10.28
Перевод пикселей в миллиметры