【问题标题】:Flex / actionscript - Screen DPIFlex / actionscript - 屏幕 DPI
【发布时间】:2010-11-06 03:12:15
【问题描述】:

有没有办法获取屏幕dpi?


我试过 Capabilities.screenDPI 但它坏了,它总是返回 72。


有什么想法吗?

非常感谢。

【问题讨论】:

    标签: apache-flex actionscript


    【解决方案1】:

    假设您有 2 个显示器,17" 和 19",分辨率相同,1280x1024(我正好有这两个)。这意味着反映像素大小(或者准确地说,适合一英寸的像素数)的实际 DPI 对于这两个来说将是不同的 - 具有相同分辨率的较小显示器将具有更大的 DPI 值。

    这意味着无法从 actionscript 或 javascript 中获取实际的 DPI。您也许可以获得以像素为单位的屏幕宽度(1280),但您无法以英寸为单位获得实际的显示器尺寸,因此您无法计算它。

    我认为 windows 返回默认值 72 和 mac 96,但不幸的是这并不能反映实际值。

    这意味着没有办法,例如,在所有显示器上制作一个 10 英寸宽的正方形:\

    在 Windows 中,如果您正确安装了显示器驱动程序,也许您可​​以从显示器驱动程序获取 DPI(我想这是您可以从 ie 获得的东西)但在我看来,没有办法让它工作在所有浏览器/平台上。

    【讨论】:

      【解决方案2】:

      我一直无法完全理解为什么会这样,但这实际上是正确的。如果你想得到宽高信息,你可以使用Capabilities.screenX和Capabilities.screenY。

      我相信您一定使用的是 Mac。 72 通常是 Mac 上的 dpi;在 Win 机器上,该值通常为 96。

      以下引用对我帮助很大。这是来自http://www.scantips.com/no72dpi.html 的一篇关于 dpi 和屏幕分辨率的长文。该帖子仅与您的问题相关,但有关屏幕 dpi 工作原理的信息很有帮助。

      您的网络浏览器报告说您的屏幕尺寸当前设置为 1440x900 像素(整个屏幕区域,而不仅仅是浏览器窗口)。因此,上面的每个 412x324 像素图像将出现在全屏的 412/1440 = 29% 宽度和 324/900 = 36% 高度(在您当前的视频设置下)。我可以很容易地保证这是真的,甚至不用在那里,但你可以自己在屏幕上查看。我希望这对您来说也很明显,因为视频系统就是这样工作的,您需要知道这一点。

      更新:

      经过一番研究——

      如您所知,screenDPI 属性不会为您提供每英寸的实际像素数 - 您将在 800x600 时获得与在 1440x900 时相同的 screenDPI 值。如果您已经知道屏幕的尺寸(以英寸为单位),那么您可以计算实际的 ppi - 但是,当然,您无法从 ActionScript 获得该信息。在 IE 中,您可以从 JavaScript 中获取它,但这并没有多大帮助。

      所以,据我所知,没有办法做到这一点。可能,您可以做一些疯狂的事情,例如使用 AS 截取您的应用程序的屏幕截图,然后将其与屏幕分辨率信息一起发送到服务器,然后让服务器对其进行分析,告诉您您的应用程序有多少英寸宽和高 - 并且因为您知道您的应用程序有多少像素宽和高,所以您可以计算每英寸的像素数。但是,我不知道服务器应用程序如何或是否会实现这一点。

      希望有一种方法可以通过 JavaScript 获取此信息。我看过一些关于将 div 的宽度/高度设置为 1 英寸然后查询 offsetWidth/offsetHeight 的帖子,但这并不比 screenDPI 更好。有趣的是,我从这种方法得到 96(不管分辨率如何),即使我从 screenDPI 得到 72。

      据我所知,如果不预先知道以英寸为单位的屏幕尺寸,就无法确定以英寸为单位的实际像素 - 而且您无法从浏览器中获取该信息。

      无赖。

      【讨论】:

      • 但这仍然不能回答我关于屏幕尺寸 dpi 的问题。假设我想在我的屏幕上绘制一个真实大小的标尺,但不知道屏幕 dpi 是不可能的。非常感谢。
      • 我的意思是你得到了正确的信息。 72 是屏幕 dpi 的正确值。您可以通过 javascript 获取 s reen dpi 来亲自检查我。在 mac 上总是 72,在 win 上总是 96。不确定其他系统。这是一个非常有趣的想法——真正的尺子。我想不出办法。如果您不受限制,您介意发布您的方法吗?当然,如果你不想,完全理解。
      • DPI 因屏幕而异。想一想,假设你有三个屏幕:(1)一个 20 英寸 1024x768 (2)一个 20 英寸 1280x768 和(3)一个 20 英寸 1920x1080。这三个屏幕是否具有相同的 DPI?肯定不是。我猜猜你有屏幕 dpi 和操作系统 dpi 有点令人困惑。无论如何干杯......
      • 更正我关于 dpi 在 mac 上始终为 72 而在 win 上为 96 的声明。应该说“通常”。但是,对于上述关于具有不同分辨率的三个屏幕的问题的答案是:是的,就“screenDPI”而言,它们可能确实具有相同的 dpi。该决议不会改变这一点。这是我要更好地理解的事情清单上的内容 - 我会看看我是否可以在今天晚些时候或明天改进我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多