Показать сообщение отдельно
Старый 05.10.2005, 13:04     # 7
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Я немного не правильно выразился. Зависимость не от разрешения экрана, а от dpi выставленного видеорежима.

Ширина/высота картинки возвращается в так называемых хайметриках (HiMetric), где 1 Hm = 1/1000 см. Как известно 1 дюйм (inch) = приблизительно 2.54 см = 2540 Hm. Стандартно видеорежим выставлен в 96 dpi (вне зависимости от разрешения).

Тогда получается что формула преобразования в пикселы будет
Цитата:
w = p.Width/2540*96
Может потребоваться округление до целого, но это зависит только от точности преобразования дюймов в сантиметры (2.54...).

Конечно может показаться что это всё какие-то извраты, но не забывай что система в принципе разрабатывалась и ориентировалась не на простую работу с изображениями, а ещё и для печати на бумаге, а оттуда и следуют все эти полиграфические заморочки.

Вообще на VB для этого есть функции типа ScaleX(p.Width, vbHimetric, vbPixels), но не знаю, будут ли они работать в WSH.
ЕЖ вне форума