Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2011, 08:57   #1
apinigin
Новичок
Джуниор
 
Регистрация: 20.07.2011
Сообщений: 2
По умолчанию Постоянный размер TImage

Здравствуйте.
Мне необходимо сделать так, чтобы размер TImage оставался постоянным при любой диагонали монитора. Именно в сантиметрах... Разрешение на всех мониторах установлено 1024x768. Условно говоря изображение должно быть всегда 7X5 см... Видимо придётся масштабировать размеры TImage динамически, в зависимости от диагонали монитора. Иначе, при одинаковом разрешении, размер на мониторе с большей диагональю больше. Как узнать диагональ монитора в см ?
apinigin вне форума Ответить с цитированием
Старый 20.07.2011, 09:48   #2
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Никак. Можно просто производить калибровку на каждом компьютере вручную, а значение сохранять в файл (или реестр).
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 20.07.2011, 10:08   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Гугль порадовал такой функцией: GetDeviceCaps.
Чтобы узнать размер дисплея монитора в миллиметрах - используем вторым параметром HORZSIZE и VERTSIZE, и от этого уже танцуем.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 20.07.2011, 13:51   #4
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Ух ты... и для всех мониторов работает? Устройство же может и не говорить о своем реальном размере (только разрешение экрана).
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 20.07.2011, 14:13   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> HORZSIZE и VERTSIZE

майкрософт советует использовать LOGPIXELSX и LOGPIXELSY, т.к. пользователь может захотеть искусственно повысить DPI монитора. По ссылке там и пример на С++ есть внизу.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 26.07.2011, 11:46   #6
apinigin
Новичок
Джуниор
 
Регистрация: 20.07.2011
Сообщений: 2
По умолчанию

int widthScreenMM=GetDeviceCaps(GetDC(0 ),HORZSIZE );
int heightScreenMM=GetDeviceCaps(GetDC( 0),VERTSIZE );
получилось 361 мм на 271 мм....
А когда меряю экран линейкой 338 мм на 271 мм ...

А если сменить разрешение на другое, то и значения в мм искажаются...

Ни при каком разрешении монитора функция не вернула верные значения
apinigin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянный фокус на кнопке Upgrades Общие вопросы Delphi 6 20.07.2010 20:50
Постоянный контент страницы Ivanchikov HTML и CSS 7 15.03.2010 18:59
Постоянный фокус на одной программе regman Общие вопросы Delphi 20 10.08.2009 11:07
Постоянный запрос о выполнении действия (NOD32) Ronni10 Безопасность, Шифрование 2 19.12.2008 17:19
Acer постоянный AUTO config Carbon Компьютерное железо 4 25.04.2008 22:54