Главная страница
    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.46 MB
Время: 0.038 c
2-1191751244
foreverDelphi
2007-10-07 14:00
2007.10.28
как изменить курсор


2-1191699591
Антон Шестаков
2007-10-06 23:39
2007.10.28
QuickRep


15-1191605733
DillerXX
2007-10-05 21:35
2007.10.28
Кто знаком с синтаксисом шелла Windows


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


15-1190911523
Дима Вид
2007-09-27 20:45
2007.10.28
Оля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский