![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пиксели и сантиметры [D7, Win95/98, WinXP]
apic © (2006-08-18 17:52:00)Мне нужно нарисовать на экране например прямоугольник 10х5 см , в натуральную величину, но в прграммировании графики, насколько я знаю все в пикселях, Так вот может кнонибудь подкинуть ф-ции преобразования пикселейв сми наоборот
Мефисто (2006-08-20 14:06:00) [21]
> хм... (20.08.06 13:49) [52]
> как бы практически совпадает...
Вот имено, что как бы :)
Может совпадение?
Мы вот с АП - ЭЛТ мониторы тестили. Размеры скачут как хотят.
Оно же как вроде должно быть константа :)
хм... (2006-08-20 13:49:00) [22]
> Произвел проверку
> procedure TForm1.TntButton1Click(Sender: TObject);
> begin
> TntLabel1.Caption := IntToStr(GetDeviceCaps(GetDC(Handle),
> HORZSIZE));
> TntLabel2.Caption := IntToStr(GetDeviceCaps(GetDC(Handle),
> VERTSIZE));
> end;
> При разрешении 1920*1200 получил 512*320 что не совсем то,
> но близко
> При разрешении 1600*900 получил 520*292 что то фантастическое
> При разрешении 1280*1024 получил 400*320 что то резко сжался
> монитор
> При разрешении 800*600 получил 426*320 что то совсем не
> в порядке с моим монитором, физические размеры гуляют куда
> угодно
>
> Как сказал Прудков, не верь глазам своим. Дальше будешь
> песни петь про DDC
а я проверил на ноутбуке:
при режиме 1024*768: 320*240
при режиме 800*600: 320*240
как бы практически совпадает...
линейкой мерил: 305*230...
Мефисто (2006-08-20 13:22:00) [23]
> McSimm © (20.08.06 13:00) [50]
> Это и не пиксели вовсе. Пиксель отрисовывается несколькими
> ячейками матрицы монитора.
Я и писал физическийпиксель монитора подразумевая эту самую ячейку :) А не тот пиксель, который представляется системой. Треп то в ветке пошел с Pavia © узнаем мы вызические размеры в мм или нет. Т.к. по мнению Pavia © в мониторе эти физические данные содержаться и виндовс может получить к ним доступ.
> Компьютер не имеет никаких дел с "физическими пикселями".
Уже писал об этом и не раз, еще в предыдущей ветке на это наставлял.
Повторил об этом еще постом выше:
> Ибо системе пофиг на физический размер пикселя (и межпиксельный
> шаг) монитора. Для системы главное получить список поддерживаемых
> разрешений для монитора дабы корректно с данным устройством
> общаться.
Пример с матрицей физических пикселей монитора привел, чтобы дать понять человеку, что из-за разных характеристик этой матрицы (размер ячейки и шаг между ячейками) невозможно получить реальный размер, даже если бы существовали мнимые сведения о физических характеристиках монитора описываемые Pavia ©.
McSimm (2006-08-20 13:00:00) [24]> пиксели монитора чаще всего расположены в шашечном порядке.
Не довод.
Компьютер не имеет никаких дел с "физическими пикселями".
Это и не пиксели вовсе. Пиксель отрисовывается несколькими ячейками матрицы монитора.
Координатная сетка XY верна независимо от физического устройства отображающей поверхности.
Мефисто (2006-08-20 12:32:00) [25]
> Anatoly Podgoretsky © (20.08.06 11:48) [48]
Про что всем форумом и разжевываем несчастному :)
Ибо системе пофиг на физический размер пикселя (и межпиксельный шаг) монитора. Для системы главное получить список поддерживаемых разрешений для монитора дабы корректно с данным устройством общаться.
Pavia © (20.08.06 01:24) [44]
Могу еще загвостку подкинуть. Непомню какая компания реализовала следующую технологию для ЭЛТ мониторов. NEC или Sony. Подзабыл как данная технология называлась. Суть в том, что для улучшения качества изображения, физические пиксели монитора имели форму немного вытянутого элипса. И как теперь подсчитывать визический размер сие пикселя? :) Это раз.
Если обратите внимание, то заметите, что пиксели монитора чаще всего расположены в шашечном порядке. (У кинескопов для телевизоров к примеру, эти физические пиксели чаще всего расположены в шахматном порядке). Вот, физические пиксели монитора расположены в шашечном порядке, как опять точно получить размер? Ведть координатная сетка X и Y для вычисления положения пикселя уже не совсем верна. Это два.
На прилавках уйма всяких мониторов. У многих из них свои физические характеристики, разная технология изготовления. Если бы под каждый пришлось подстраиваться в милемтры и сантиметры, чтобы из себя представляла ОС и был бы такой широки выбор мониторов? Это три.
Anatoly Podgoretsky (2006-08-20 11:48:00) [26]Произвел проверку
procedure TForm1.TntButton1Click(Sender: TObject);
begin
TntLabel1.Caption := IntToStr(GetDeviceCaps(GetDC(Handle),HORZSIZE));
TntLabel2.Caption := IntToStr(GetDeviceCaps(GetDC(Handle),VERTSIZE));
end;
При разрешении 1920*1200 получил 512*320 что не совсем то, но близко
При разрешении 1600*900 получил 520*292 что то фантастическое
При разрешении 1280*1024 получил 400*320 что то резко сжался монитор
При разрешении 800*600 получил 426*320 что то совсем не в порядке с моим монитором, физические размеры гуляют куда угодно
Как сказал Прудков, не верь глазам своим. Дальше будешь песни петь про DDC
Anatoly Podgoretsky (2006-08-20 11:23:00) [27]Верить не запретишь.
Мефисто (2006-08-20 08:39:00) [28]
> Pavia © (20.08.06 01:24) [44]
Попробуйте-ка получить возвращаемы значения при разных разрешениях дисплея:
> vsiz := GetDeviceCaps(h,VERTSIZE); {display height in
> mm}
Раз по твоему мнению, винда получает точные значения от монитора, то почему при разных разрешениях дисплея вылазят разные цифры? Динамически меняются физические размеры монитора? :)))
Это, так, еще раз тебе на засыпку, чтобы развеять миф в который ты веришь. Получить точные СМ для монитора не реально, придется все время подбивать некий коэффициэнт. А вот для принтеров, можно получить точный расчет.
Мефисто (2006-08-20 01:26:00) [29]
> Pavia © (20.08.06 00:53) [40]
> Другая часть засекречена.
Кто этот жадный подлец? :)
> Разве, что еще могу добавить, что в 2000 году стандарт изменился.
> И теперь можно осуществлять контроль над монитором. Имеется
> в виду делать с монитором то, что можно сделать с кнопок
> находящихся на мониторе.
Скорее не изменилось, а кое что дополнилось.
> Осталось узнать разрешение и сделать перерасчет.
И так для каждого девайса будем коэффициенты подбивать?
> Еще могу добавить если не верите мне то возьмите: линейку,
> рулетку, или сантиметр и померьте.
Взял, померил. Результат приблизительно, так попадает. Но с моей линейкой, чего-то погрешность более 1,5-2 см. Толи моник у меня кривой, толи линейка :)
Pavia (2006-08-20 01:24:00) [30]Если хотите подробней вам на www.vesa.org только там мало информации лежит в открытом доступе. Советую искать пословам EDID(EXTENDED DISPLAY IDENTIFICATION DATA) и DDC (Display Data Channel).
McSimm (2006-08-20 01:20:00) [31]> Про USB на мониторе, мало что знаю.
Не USB на мониторе, а подключение монитора через USB порт компьютера.
Именно для того, чтобы иметь возможность управлять им без кнопок на самом мониторе.
Жаль, что они не научились делать этого по стандарту, который изменился с 2000 года :)
Pavia (2006-08-20 01:01:00) [32]Еще могу добавить если не верите мне то возьмите: линейку, рулетку, или сантиметр и померьте.
Про USB на мониторе, мало что знаю. Но выступает в качестве улучшения дизайна, для того чтобы всяки та Flash накопители могильники было проще подключать, к компьютеру.
McSimm (2006-08-20 00:56:00) [33]> И теперь можно осуществлять контроль над монитором. Имеется
> в виду делать с монитором то, что можно сделать с кнопок
> находящихся на мониторе.
Жаль производители мониторов об этом до сих пор не знают и лепят зачем-то дополнительный USB интерфейс для этих целей.
Pavia (2006-08-20 00:53:00) [34]
> Ну поделитесь уже конкретной информацией.
> Всем уже жуть как интересно.
Я поделился все информацией, которую имею в наличии. Другая часть засекречена.
Разве, что еще могу добавить, что в 2000 году стандарт изменился. И теперь можно осуществлять контроль над монитором. Имеется в виду делать с монитором то, что можно сделать с кнопок находящихся на мониторе.
Есть монитор он соединен с видео картой. Видео карта может не только выводить информацию на монитор, но прочитать информацию с монитора о его характеристиках. одной из такой характеристик является размеры изображения на мониторе по горизонтали и вертикали в сантиметрах и если доступна более детальные данные то и в миллиметрах. Вот эти значение и получаются при помощи следующих директив.
hsiz := GetDeviceCaps(h,HORZSIZE); {display width in mm}
vsiz := GetDeviceCaps(h,VERTSIZE); {display height in mm}
Осталось узнать разрешение и сделать перерасчет.
Мефисто (2006-08-20 00:42:00) [35]
> Pavia © (20.08.06 00:34) [37]
Ну поделитесь уже конкретной информацией.
Всем уже жуть как интересно.
DesWind (2006-08-20 00:41:00) [36]
> DesWind © (20.08.06 00:18) [33]
До этого я не понимал филосифии единиц измерения. ))))
Pavia (2006-08-20 00:34:00) [37]
> И по какому каналу ? RGB ?
Нет канал DDC (или другое название I2C). Стандартый интерфейс для всех мониторов от 1994 года.
А ну это надо смотреть на устройство и копаться в ядре виндоуса, что он там вернет в случаи не получения параметров монитора.
Anatoly Podgoretsky (2006-08-20 00:31:00) [38]McSimm © (20.08.06 00:24) [35]
Даже проще Standard Monitor
McSimm (2006-08-20 00:24:00) [39]> Нет, телевизор не имеет обратной связи с компьютером.
А какие мониторы имеют ?
И по какому каналу ? RGB ?
> На два монитора можно подавать 2 разные картинки.
Речь не о том, несложное устройство позволяет от одного выхода отображать картинку на несколько устройств. Какую информацию будет "знать Windows" в этом случае ?
Мефисто (2006-08-20 00:20:00) [40]
> То, что вы говорите это DPI и оно может быть произвольным.
Несовсем...
> Но это относиться больше к шрифтам. Или же для переноса
> данных с одного устройства на другое, для правильного масштабирования.
>
???
> В мониторе записаны его параметры. Они указываются либо
> в сантиметрах либо более точно в миллиметрах.
Это уже по какому кругу? :)