0

我正在尝试使用 Capabilities 类在屏幕上以精确的 (2.5" x 5") 绘制一个精确大小的精灵,而不管屏幕的分辨率如何,但是虽然我相信代码是正确的,但精灵的大小并不准确 -实际用尺子测量时。

function inchesToPixels(inches:Number):uint
    {
    return Math.round(Capabilities.screenDPI * inches);
    }

var mySprite:Sprite = new Sprite();
mySprite.graphics.beginFill(0x000000, 0.5);
mySprite.graphics.drawRect(0, 0, inchesToPixels(2.5), inchesToPixels(5));
mySprite.graphics.endFill();
addChild(mySprite);
4

2 回答 2

1

我对此并不完全确定,但我的感觉是 Capabilities 类返回的 screenDPI 值对于运行相同分辨率的两台显示器来说将是相同的值,即使显示器具有不同的物理尺寸。

举例来说,如果您有两台显示器,一台为 14 英寸,另一台为 28 英寸,都显示相同的 800 x 600 像素分辨率,则 screenDPI 属性将返回相同的内容,因为它们都使用相同的分辨率.

但是,由于显示器的物理尺寸,每个屏幕上实际英寸的点数会有所不同。因此,当您运行代码并使用标尺测量您创建的屏幕 Sprite 时,它​​不会与现实世界的英寸相匹配。我不确定您如何解决这个问题(如果我对导致它的原因是正确的),这似乎很困难。

得不

于 2010-03-26T19:57:31.630 回答
0

我建议在您的应用程序开始时告诉用户“我检测到您的显示器是 XX 英寸”(其中 XX 是根据 screenDPI 计算的),并允许用户输入正确的显示器尺寸。

于 2010-03-31T00:45:36.117 回答