2009-06-26 4 views
4

Есть ли способ получить изображение на экране?Flex/actionscript - Экран DPI


Я попытался Capabilities.screenDPI но она сломана, она всегда возвращается 72.


Любые идеи?

Большое спасибо.

ответ

2

Я никогда не мог полностью окутать голову, почему это так, но это на самом деле правильно. Если вы хотите получить информацию по ширине по высоте, вы можете использовать Capabilities.screenX и Capabilities.screenY.

Я считаю, что вы должны использовать Mac. 72 часто является разрешением dpi на компьютерах Mac; на машине Win, значение обычно будет 96.

Следующая цитата мне очень помогла. Это от длинного сообщения о dpi и разрешении экрана на http://www.scantips.com/no72dpi.html. Сообщение только касательно связано с вашим вопросом, но информация о том, как работает экран, работает.

Ваш веб-браузер сообщает, что размер экрана в настоящий момент установлен на 1440x900 пикселей (общая площадь вашего экрана, а не только окно браузера). Поэтому каждое изображение размером 412x324 пикселей будет отображаться в формате 412/1440 = 29% и 324/900 = 36% высоты вашего полноэкранного режима (при текущих настройках видео). Я могу легко обещать, что это правда, даже не будучи там, но вы можете проверить это на своем экране для себя. Надеюсь, вам это тоже кажется очевидным, потому что именно так работают видеосистемы, и вам нужно это знать.

ОБНОВЛЕНО:

После еще некоторых исследований -

Как вы знаете, screenDPI свойство не дает вам фактическое количество пикселей на дюйм - вы получите такое же значение для screenDPI на 800x600, как и на 1440x900. Если вы уже знаете размеры экрана в дюймах, то вы можете рассчитать фактический ppi - но, конечно, вы не можете получить эту информацию с ActionScript. В IE вы можете получить его с помощью JavaScript, но это мало помогает.

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

Надеюсь, что есть возможность получить это через JavaScript. Я видел пару сообщений об установке ширины/высоты div в 1in, а затем запрос offsetWidth/offsetHeight, но это не работает лучше, чем screenDPI. Интересно, что я получаю 96 из этого метода (независимо от разрешения), хотя я получаю 72 от screenDPI.

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

Облом.

+0

Но это еще не отвечает на мой вопрос о размере экрана. Скажем, я хочу нарисовать линейку правильного размера на моем экране, не зная, что экранный экран невозможен. Большое спасибо в любом случае. – StfnoPad

+0

Я имею в виду, что вы получаете правильную информацию. 72 - правильное значение для экрана. Вы можете дважды проверить меня для себя, получив повторную печать через javascript. Это будет 72 на mac и 96 на победу. Не уверен в других системах. Это действительно интересная идея - правитель реального размера. Я не могу придумать, как это сделать. Если вы не ограничены, не возражаете ли вы опубликовать свой подход? Полностью понять, если вы не хотите, конечно. –

+0

DPI зависит от каждого экрана. просто подумайте об этом на минуту, скажите, что у вас есть три экрана: (1) 20 "1024x768 (2) 20" 1280x768 и (3) 20 "1920x1080. У трех экранов одинаковый DPI? Я предполагаю, что он смущает то, что у вас есть dpi на экране и 0 точек на дюйм. Приветствия в любом случае ... – StfnoPad

1

Предположим, у вас есть 2 монитора, 17 "и 19" с одинаковым разрешением 1280x1024 (у меня есть именно эти два). это означает, что фактический DPI, который отражает размер пикселя (или точно, количество пикселей, которые соответствуют одному дюйму), будет РАЗЛИЧНЫМ для этих двух меньших мониторов с одинаковым разрешением будет иметь большее значение DPI.

Это означает, что нет никакого способа получить фактический DPI от ActionScript или JavaScript. вы можете получить ширину экрана (1280) в пикселях, но вы не можете получить фактический размер монитора в дюймах, поэтому вы не можете его исчислять.

Я полагаю, что окна возвращают значение по умолчанию 72 и mac 96, но это, к сожалению, не отражает реального значения.

, что означает, что нет никакого способа, чтобы, например, сделать квадрат, который будет 10 дюймов в ширину на всех мониторах: \

в окнах, если вы правильно установили драйверы монитора, может быть, вы можете получить DPI от драйвера монитора (я полагаю, это то, что вы можете получить от ie), но мне кажется, что нет способа заставить его работать на всех браузерах/платформах.

Смежные вопросы