2013-02-27 45 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

相關問題