Flex / actionscript - Экран DPI - PullRequest
       11

Flex / actionscript - Экран DPI

4 голосов
/ 26 июня 2009

Есть ли способ получить разрешение экрана?


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


Есть идеи?

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

Ответы [ 2 ]

2 голосов
/ 26 июня 2009

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

Полагаю, вы используете Mac. 72 - это dpi на Mac; на Win-машине это значение обычно составляет 96.

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

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

ОБНОВЛЕНИЕ:

После еще одного исследования -

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

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

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

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

Облом.

1 голос
/ 02 июля 2010

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...