2013-02-27 18 views
0

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

这是我参加竞选,看起来在触摸坐标代码:

从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

回答

1

XAML端的所有内容都是在与设备无关的像素中测量的。理想情况下,您不必担心实际的物理像素,并让winrt在后台实现其魔力。

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

+0

谢谢,那正是我正在寻找的。 – 2013-02-28 22:48:14

1

他们的自然显示分辨率为1920x1080

这使得显示器符合HD平板配置文件,一切都自动通过140%缩放。当然,任何报告的触摸位置都会出现相反的缩放。你永远不应该获得1371,771以上的职位。这确保了任何商店应用程序都可以在任何设备上运行,无论其显示质量如何,以及应用程序代码不得不提供帮助,除非在应用程序重新缩放到140和180%时提供的位图仍然显得很清晰。因此你不应该做任何事情。目前还不清楚你想要解决什么问题。

一篇很好的文章,描述了自动缩放功能is here

+0

有没有办法知道我是否正在使用此缩放的平板电脑上运行,因为当我的开发机器上运行相同的应用程序时,它会报告从0x0到1920x1200的触摸(真正的鼠标)坐标。 – 2013-02-27 22:11:39

+0

问题是我必须将触摸坐标从屏幕坐标缩放到世界坐标中,这是我不知道最大X和Y触摸坐标时所做的。我在我的游戏中使用米作为一个单位,如果我知道世界是10米宽,用户触摸1366像素,这是否意味着他们在10米触摸,或者他们触摸1366年/ 1920年* 10米? – 2013-02-27 22:13:27

+0

你没有这样做。如果您将绘图按比例缩小1366/10.0,则应该将输入缩放10.0/1366,即倒数。屏幕分辨率从来不是一个因素。 – 2013-02-27 22:19:16

相关问题