我注意到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
答案 0 :(得分:1)
他们的原生显示分辨率为1920x1080
这使得显示器适合高清平板电脑配置文件,一切都自动缩放140%。当然,对于任何报告的触摸位置,发生相反的不缩放。你永远不应该超过1371,771。这确保了任何商店应用程序都可以在任何设备上运行,无论其显示质量如何,并且应用程序代码不需要帮助,除了提供在应用程序重新调整为140和180%时仍然看起来很清晰的位图。因此,你根本不应该做任何事情。目前还不清楚你要解决什么问题。
一篇描述自动缩放功能is here的优秀文章。
答案 1 :(得分:1)
XAML端的所有内容都是在与设备无关的像素中测量的。理想情况下,您永远不必担心实际的物理像素,让winrt在后台发挥其魔力。
如果某个季节您需要找到当前的比例因子,您可以使用DisplayProperties.ResolutionScale并使用它将DIP转换为屏幕像素。