Windows 8 为什么Surface Pro上的最大X和Y触摸坐标与本机显示分辨率不同?

Windows 8 为什么Surface Pro上的最大X和Y触摸坐标与本机显示分辨率不同?,windows-8,windows-store-apps,Windows 8,Windows Store Apps,我注意到Surface Pro和我相信Sony Vaio Duo 11报告的最大触摸坐标为1366x768,这让我感到惊讶,因为他们的本机显示分辨率为1920x1080。 有人知道在运行时找出最大触摸坐标的方法吗?我在XAML下运行DirectX应用程序,因此我必须将触摸坐标缩放到我自己的世界坐标中,如果不知道缩放因子是什么,我就不能这样做 下面是我正在运行的代码,用于查看触摸坐标: 来自DirectXPage.xaml <Grid PointerPressed="OnPointerPre

我注意到Surface Pro和我相信Sony Vaio Duo 11报告的最大触摸坐标为1366x768,这让我感到惊讶,因为他们的本机显示分辨率为1920x1080。 有人知道在运行时找出最大触摸坐标的方法吗?我在XAML下运行DirectX应用程序,因此我必须将触摸坐标缩放到我自己的世界坐标中,如果不知道缩放因子是什么,我就不能这样做

下面是我正在运行的代码,用于查看触摸坐标:

来自DirectXPage.xaml

<Grid PointerPressed="OnPointerPressed"></Grid>
此外,以下是一个示例项目设置,如果在Surface Pro上运行,可以演示此问题:

其本机显示分辨率为1920x1080

这使得显示器符合高清平板电脑的配置,所有内容都自动缩放140%。当然,对于任何报告的触摸位置,都会出现相反的不缩放。你永远不应该得到超过1371771的职位。这确保了任何商店应用程序都能在任何设备上运行,而不管其显示质量如何,也不需要应用程序代码的帮助,除了提供位图外,当应用程序被重新缩放到140%和180%时,位图仍然清晰可见。因此,你不应该做任何事情。不清楚您试图解决的问题是什么


这是一篇描述自动缩放功能的优秀文章。

XAML端的所有内容都是以独立于设备的像素来衡量的。理想情况下,您不必担心实际的物理像素,让winrt在背景中发挥其魔力


如果某个季节您确实需要找到当前的比例因子,您可以使用它将倾斜转换为屏幕像素。

有没有办法知道我是否在使用这种比例的平板电脑上运行,因为当同一个应用程序在我的开发机器上运行时,它会报告触摸(实际上是鼠标)坐标从0x0到1920x1200。问题是我必须将触摸坐标从屏幕坐标缩放到世界坐标,如果不知道最大X和Y触摸坐标,我就无法做到这一点。我在游戏中使用米作为一个单位,如果我知道世界是10米宽的,用户触摸的是1366像素,这意味着他们触摸的是10米,还是1366/1920*10米?你做得不对。如果按1366/10.0的比例缩放图形,则应按10.0/1366的比例缩放输入,反之亦然。屏幕分辨率从来不是一个因素。
void DirectXPage::OnPointerPressed(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
{
   auto pointerPoint = args->GetCurrentPoint(nullptr);
   // the x value ranges between 0 and 1366
   auto x = pointerPoint->Position.X;
   // the y value ranges between 0 and 768
   auto y = pointerPoint->Position.Y;
}