0

私はSurfaceProとSonyVaioDuo 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です

これにより、ディスプレイがHDタブレットプロファイルに適合し、すべてが自動的に140%スケーリングされます。もちろん、報告されたタッチ位置では逆のスケーリング解除が発生します。1371,771を超えるポジションを取得することはできません。これにより、ストアアプリは、表示の品質に関係なく、アプリケーションコードを使用せずに、アプリを140%と180%に再スケーリングしたときに鮮明に見えるビットマップを提供するだけでなく、どのデバイスでも機能するようになります。したがって、何もしないでください。修正しようとしている問題は不明です。

自動スケーリング機能について説明している優れた記事はこちらです。

于 2013-02-27T20:39:01.263 に答える
1

XAML側のすべては、デバイスに依存しないピクセルで測定されます。理想的には、実際の物理ピクセルについて心配する必要はなく、winrtにバックグラウンドでその魔法を実行させる必要があります。

ある季節に現在のスケール係数を見つける必要がある場合は、DisplayProperties.ResolutionScaleを使用して、DIPを画面ピクセルに変換できます。

于 2013-02-28T01:16:53.007 に答える