私のアプリケーションでは、ズームなどの組み込みの操作機能をすべて使用したいと考えています。しかし、ユーザーが画面上で 3 本の指を押すと、特定の UI 要素を表示したいと思います。では、ユーザーが 3 本の指を同時に押し、画面上で隣り合わせに押したかどうかを確認する最良の方法は何ですか? (組み込みの操作の可能性を無効にすることなく)。
私の最初のアプローチは、レイアウトの一番上の Grid 要素に TouchDown イベントを登録することでした。イベント ハンドラで連絡先を取得します。しかし、そこで何をすべきか?
連絡先が指紋であるかどうかを確認し、それをリストに保存し、リストに 2 つの類似した連絡先が既に含まれているかどうかを確認するだけですか?
または、よりセクシーな解決策はありますか?
ありがとう!
編集:
答えに続いて、私は2つの方法を書きました:
private void OnContactDown(object sender, ContactEventArgs e)
{
if (this.ContactsOver.Count == 3)
{
Console.WriteLine("3 contacts down. Check proximity");
if (areNear(this.ContactsOver))
{
Console.WriteLine("3 fingers down!");
}
}
}
private Boolean areNear(ReadOnlyContactCollection contacts)
{
if ( Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).X - contacts.ElementAt(1).GetCenterPosition(this).X) < 100 &&
Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).Y - contacts.ElementAt(1).GetCenterPosition(this).Y) < 100 &&
Math.Abs(contacts.ElementAt(1).GetCenterPosition(this).X - contacts.ElementAt(2).GetCenterPosition(this).X) < 100 &&
Math.Abs(contacts.ElementAt(1).GetCenterPosition(this).Y - contacts.ElementAt(2).GetCenterPosition(this).Y) < 100 &&
Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).X - contacts.ElementAt(2).GetCenterPosition(this).X) < 100 &&
Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).Y - contacts.ElementAt(2).GetCenterPosition(this).Y) < 100)
{
return true;
}
else
{
return false;
}
}
それらは書き直さなければなりませんが、うまくいきます。また、しきい値 (atm 100) を調整する必要があります。