0

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

这是我正在运行的查看触摸坐标的代码:

来自 DirectXPage.xaml

<Grid PointerPressed="OnPointerPressed"></Grid>

来自 DirectXPage.xaml.cpp

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;
}

此外,这里是一个示例项目设置,如果在 Surface Pro 上运行可以演示此问题:http: //andrewgarrison.com/files/TouchTester.zip

4

2 回答 2

1

它们的原始显示分辨率为 1920x1080

这使得显示器适合高清平板电脑配置文件,一切都自动缩放 140%。当然,任何报告的触摸位置都会发生相反的缩放。您永远不应获得超过 1371,771 的头寸。这确保了任何商店应用程序都可以在任何设备上运行,无论其显示质量如何,也无需应用程序代码提供帮助,除了提供在应用程序重新缩放到 140% 和 180% 时仍然看起来清晰的位图。因此,您根本不应该做任何事情。目前尚不清楚您要解决什么问题。

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

于 2013-02-27T20:39:01.263 回答
1

XAML 端的所有内容都以与设备无关的像素来衡量。理想情况下,您永远不必担心实际的物理像素,让 winrt 在后台发挥它的魔力。

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

于 2013-02-28T01:16:53.007 回答