Flex / actionscript - 屏幕DPI

时间:2009-06-26 12:04:44

标签: flex actionscript

  

有没有办法获得屏幕dpi?


我尝试了 Capabilities.screenDPI ,但它已损坏,它总是返回72.


任何想法?

非常感谢。

2 个答案:

答案 0 :(得分:2)

我从未能完全理解为什么会这样,但这实际上是正确的。如果您想获得逐个宽度的信息,可以使用Capabilities.screenXCapabilities.screenY

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

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

  

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

更新:

经过一些更多的研究 -

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

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

希望有可能通过JavaScript获得此功能。我已经看过几篇关于将div的宽度/高度设置为1in然后查询offsetWidth / offsetHeight的帖子,但这并不比screenDPI更好。有趣的是,即使我从screenDPI得到72,我从这个方法得到96(无论分辨率如何)。

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

糟糕,

答案 1 :(得分:1)

假设您有2台显示器,17“和19”,SAME分辨率为1280x1024(我正是这两个)。这意味着反映像素大小(或精确地,适合一英寸的像素数)的实际DPI对于那两个而言将是不同的 - 具有相同分辨率的较小监视器将具有更大的DPI值。

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

我认为Windows返回默认值72和mac 96,但遗憾的是它并不反映真实值。

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

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