TouchDevice クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
タッチスクリーン上で指によって生成されるシングル タッチ入力を表します。
public ref class TouchDevice abstract : System::Windows::Input::InputDevice, System::Windows::Input::IManipulator
public abstract class TouchDevice : System.Windows.Input.InputDevice, System.Windows.Input.IManipulator
type TouchDevice = class
inherit InputDevice
interface IManipulator
Public MustInherit Class TouchDevice
Inherits InputDevice
Implements IManipulator
- 継承
- 実装
例
次の例では、タッチスクリーン上で 2 本の指をドラッグして、 Canvas に単純なパターンを作成できます。 各タッチは、 の でTouchEventArgs表されますTouchDevice。 パターンは、タッチによって提供されるタッチ ポイント間の線を描画することによって作成されます。 この例では、Windows タッチ対応の画面が必要です。
次のマークアップは、グリッド内の Canvas 中央にある で構成されるユーザー インターフェイスを作成し、タッチ イベントのイベント ハンドラーをアタッチします。
<Window x:Class="WpfTouchEventsSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="525" Width="525">
<Grid>
<Canvas x:Name="canvas1"
Width="500" Height="500"
Background="Black"
TouchDown="canvas_TouchDown"
TouchMove="canvas_TouchMove"
TouchUp="canvas_TouchUp" />
</Grid>
</Window>
タッチ イベントを処理するコードを次に示します。 でCanvasTouchDeviceタッチが押されると、 が にCanvasキャプチャされます。 タッチが解除されると、 TouchDevice が解放されます。 でタッチが移動すると、 CanvasId がオンになります。 最初のタッチから移動した場合、その位置が記録されます。 移動が 2 番目のタッチから来た場合は、最初のタッチの位置から 2 番目のタッチの位置に線が描画されます。
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shapes;
using System.Windows.Controls;
namespace WpfTouchEventsSample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
// Variables to track the first two touch points
// and the ID of the first touch point.
private Point pt1, pt2 = new Point();
private int firstTouchId = -1;
public MainWindow()
{
InitializeComponent();
}
private void canvas_TouchDown(object sender, TouchEventArgs e)
{
Canvas _canvas = (Canvas)sender as Canvas;
if (_canvas != null)
{
_canvas.Children.Clear();
e.TouchDevice.Capture(_canvas);
// Record the ID of the first touch point if it hasn't been recorded.
if (firstTouchId == -1)
firstTouchId = e.TouchDevice.Id;
}
}
private void canvas_TouchMove(object sender, TouchEventArgs e)
{
Canvas _canvas = (Canvas)sender as Canvas;
if (_canvas != null)
{
TouchPoint tp = e.GetTouchPoint(_canvas);
// This is the first touch point; just record its position.
if (e.TouchDevice.Id == firstTouchId)
{
pt1.X = tp.Position.X;
pt1.Y = tp.Position.Y;
}
// This is not the first touch point; draw a line from the first point to this one.
else if (e.TouchDevice.Id != firstTouchId)
{
pt2.X = tp.Position.X;
pt2.Y = tp.Position.Y;
Line _line = new Line();
_line.Stroke = new RadialGradientBrush(Colors.White, Colors.Black);
_line.X1 = pt1.X;
_line.X2 = pt2.X;
_line.Y1 = pt1.Y;
_line.Y2 = pt2.Y;
_line.StrokeThickness = 2;
_canvas.Children.Add(_line);
}
}
}
private void canvas_TouchUp(object sender, TouchEventArgs e)
{
Canvas _canvas = (Canvas)sender as Canvas;
if (_canvas != null && e.TouchDevice.Captured == _canvas)
{
_canvas.ReleaseTouchCapture(e.TouchDevice);
}
}
}
}
Class MainWindow
' Variables to track the first two touch points
' and the ID of the first touch point.
Private pt1, pt2 As Point
Private firstTouchId As Integer = -1
' Touch Down
Private Sub canvas_TouchDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.TouchEventArgs)
Dim _canvas As Canvas = CType(sender, Canvas)
If (_canvas IsNot Nothing) Then
_canvas.Children.Clear()
e.TouchDevice.Capture(_canvas)
' Record the ID of the first touch point if it hasn't been recorded.
If firstTouchId = -1 Then
firstTouchId = e.TouchDevice.Id
End If
End If
End Sub
' Touch Move
Private Sub canvas_TouchMove(ByVal sender As System.Object, ByVal e As System.Windows.Input.TouchEventArgs)
Dim _canvas As Canvas = CType(sender, Canvas)
If (_canvas IsNot Nothing) Then
Dim tp = e.GetTouchPoint(_canvas)
' This is the first touch point; just record its position.
If e.TouchDevice.Id = firstTouchId Then
pt1.X = tp.Position.X
pt1.Y = tp.Position.Y
' This is not the first touch point; draw a line from the first point to this one.
ElseIf e.TouchDevice.Id <> firstTouchId Then
pt2.X = tp.Position.X
pt2.Y = tp.Position.Y
Dim _line As New Line()
_line.Stroke = New RadialGradientBrush(Colors.White, Colors.Black)
_line.X1 = pt1.X
_line.X2 = pt2.X
_line.Y1 = pt1.Y
_line.Y2 = pt2.Y
_line.StrokeThickness = 2
_canvas.Children.Add(_line)
End If
End If
End Sub
' Touch Up
Private Sub canvas_TouchUp(ByVal sender As System.Object, ByVal e As System.Windows.Input.TouchEventArgs)
Dim _canvas As Canvas = CType(sender, Canvas)
If (_canvas IsNot Nothing AndAlso e.TouchDevice.Captured Is _canvas) Then
_canvas.ReleaseTouchCapture(e.TouchDevice)
End If
End Sub
End Class
注釈
通常、 プロパティを TouchDevice 使用して に TouchEventArgs.TouchDevice アクセスします。 は TouchDevice 、画面上のシングル タッチを表します。 複数のタッチが存在する場合は、 プロパティを Id 使用してそれらを区別します。
注意
このクラスには、すべてのメンバーに適用されるクラス レベルでの継承要求が含まれています。 SecurityException派生クラスに完全信頼アクセス許可がない場合は、 がスローされます。 セキュリティ要求の詳細については、「 リンク要求 と 継承要求」を参照してください。
コンストラクター
TouchDevice(Int32) |
TouchDevice クラスを初期化するために、派生クラスのコンストラクターから呼び出されます。 |
プロパティ
ActiveSource |
このデバイスの入力を報告している PresentationSource を取得します。 |
Captured |
TouchDevice をキャプチャした要素を取得します。 |
CaptureMode |
TouchDevice のキャプチャ ポリシーを取得します。 |
DirectlyOver |
タッチ接触点の直下にある要素を取得します。 |
Dispatcher |
この Dispatcher が関連付けられている DispatcherObject を取得します。 (継承元 DispatcherObject) |
Id |
オペレーティング システムに用意されている、TouchDevice の一意の識別子を取得します。 |
IsActive |
デバイスがアクティブかどうかを示す値を取得します。 |
Target |
TouchDevice から入力を受け取る要素を取得します。 |
メソッド
Activate() |
入力メッセージング システムに TouchDevice を追加します。 |
Capture(IInputElement) |
Element キャプチャ モードを使用して、指定した要素へのタッチをキャプチャします。 |
Capture(IInputElement, CaptureMode) |
指定した CaptureMode を使用して、指定した要素へのタッチをキャプチャします。 |
CheckAccess() |
呼び出し元のスレッドがこの DispatcherObject にアクセスできるかどうかを確認します。 (継承元 DispatcherObject) |
Deactivate() |
入力メッセージング システムから TouchDevice を削除します。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetIntermediateTouchPoints(IInputElement) |
派生クラスでオーバーライドされると、最新のタッチ イベントと前回のタッチ イベント間で収集されたすべてのタッチ ポイントを返します。 |
GetTouchPoint(IInputElement) |
指定された要素に対する相対的なタッチ デバイスの現在の位置を返します。 |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
OnCapture(IInputElement, CaptureMode) |
タッチが要素にキャプチャされると呼び出されます。 |
OnManipulationEnded(Boolean) |
操作が終了すると呼び出されます。 |
OnManipulationStarted() |
操作が開始されると呼び出されます。 |
ReportDown() |
タッチが要素上で押されたことを報告します。 |
ReportMove() |
タッチが要素上を移動していることを報告します。 |
ReportUp() |
タッチが要素から放されたことを報告します。 |
SetActiveSource(PresentationSource) |
このデバイスの入力を報告している PresentationSource を設定します。 |
Synchronize() |
TouchDevice に強制的にユーザー インターフェイスと基になっているタッチ ポイントを同期させます。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
VerifyAccess() |
呼び出し元のスレッドがこの DispatcherObject にアクセスできるように強制します。 (継承元 DispatcherObject) |
イベント
Activated |
TouchDevice が入力メッセージング システムに追加されるときに発生します。 |
Deactivated |
TouchDevice が入力メッセージング システムから削除されると発生します。 |
Updated |
タッチ メッセージが送信されたときに発生します。 |
明示的なインターフェイスの実装
IManipulator.GetPosition(IInputElement) |
IManipulator オブジェクトの位置を返します。 |
IManipulator.Id |
オペレーティング システムに用意されている、TouchDevice の一意の識別子を取得します。 |
IManipulator.ManipulationEnded(Boolean) |
操作の終了時に発生します。 |
適用対象
.NET