Windows Phone 8.1 上的 ResolutionScale 与 RawPixelsPerViewPixel

ResolutionScale vs RawPixelsPerViewPixel on Windows Phone 8.1

我目前正在开发一个通用的 Windows 8.1 / Windows Phone 8.1 应用程序,我正在尝试理解呈现给的各种类型的显示信息我.

对于 Windows Phone,我们可以访问 DisplayInformationClass 中的两个不同属性:

ResolutionScale 似乎只对某些 'tiers' 有效,例如 100/140/240,而 RawPixelsForViewPixels 看起来它为给定设备提供了精确的数字。例如,在我的 HTC One 上:

这些值完全不同!

我的假设是,ResolutionScale 应该用于存储更离散的项目,例如图像,在这些项目中,您无法在很宽的范围内制作各种尺寸,而 RawPixelsPerViewPixel 可以为您提供精确的值(例如,用于自定义绘图)。

鉴于 Windows.Current.Bounds 为我的 HTC One 提供了 415x738 的视野像素,而我的 phone 的指定分辨率是 1080 x 1920,2.6 似乎是正确的。

但是,RawPixelsPerViewPixels 仅适用于 Windows Phone 8.1,不适用于 Windows 8.1,而且我似乎找不到与 "approximate" 上面描述的 ResolutionScale 值,如果我想为我的 Windows 8.1 应用程序提供更精确的数字。

我想这是一个由两部分组成的问题:

1) 上述关于满足近似需求与实际需求的假设是否有效?

2) 为什么 Windows 8.1 不同时提供这两种功能?为什么 ResolutionScale 值是唯一可用的,而 Windows Phone 8.1 提供两者?

ResolutionScale 已弃用;始终对 Windows Phone 和 Windows 10 个通用应用程序使用 RawPixelsPerViewPixel

不幸的是,Windows 8.1(在 Phone 8.1 之前发布)仍然使用 ResolutionScale,因此您需要继续为 Windows 8.1 应用程序使用 属性 .

如果您正在构建 Windows 8.1 / Windows Phone 8.1 通用应用程序,那么您需要将任何比例因子计算从共享代码移到特定于平台的代码中(例如,只是一个辅助方法 GetScaleFactor() returns 每个平台的正确值)。