Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
2-1191850673
webpauk
2007-10-08 17:37
2007.10.28
Преобразование типов


15-1190783124
nikolay-gavrilov
2007-09-26 09:05
2007.10.28
TWSocket - SSL Effort


1-1186990648
MultIfleX
2007-08-13 11:37
2007.10.28
Неактивируемое окно


2-1191323650
Denis_
2007-10-02 15:14
2007.10.28
Смена даты открытия файла.


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




   Наверх