Задание размера изображения в миллиметрах

Рейтинг: 1Ответов: 1Опубликовано: 12.04.2011

Подскажите, как можно задать размер изображения в WinForms в миллиметрах?

Необходимо для того, чтобы изображение сохраняло размер в независимости от размеров и разрешения экрана. Вариант с определенным процентом от площади экрана не подходит.

Ответы

▲ 2Принят

Подумайте насчет этого:

  1. Получаем разрешение экрана (1280 * 800)
  2. Получаем количество пикселов на дюйм (96dpi = 3.779dpmm) (соответственно реальный размер монитора в миллиметрах = (1280/3.779 = 338.71) на (800/3.779 = 211.69) (33.8 * 21.1 см)
  3. Теперь мы знаем, размер изображения, предположим, 200 * 200
  4. Также получим на нашем экране 52.92 * 52.92
  5. Получите проценты от полученных значений 15.65% * 25.08% и примените их к пикселам (хотя не уверен, можете другим способом вернуться к пикселам)

А теперь давайте посмотрим сюда: 200/(1280/100) = 15,625% на 200/(800/100) = 25%. Невероятно, не правда ли? Только если вспомнить, что есть такая штука, которая называется "погрешность вычислений" и, знаете ли вы, какую погрешность даст 5 операций деления вместо двух?

Правда если вчитаться в ваш вопрос, тогда вот такое действо намечается:

  1. Определите константу, которая определяет "идеальный" монитор, т.е. на котором ваша картинка идеальных размеров (описывающая размеры)
  2. Определите реальный размер картинки на другом экране
  3. Теперь вычислите, нужно ли ее уменьшить или увеличить, относительно идеального монитора

Как-то так. Можете вносить поправки, это первое что приходит в голову. Теперь стоит формализировать, как вычислять значение "идеального монитора" вместо константы, но пока в голову ничего не лезет.