/// <summary> /// [内部メソッド] /// UP イベントデータを実行する /// </summary> /// <param name="eventData">イベントデータ</param> private void executeUpEvent(Win32ApiWrapper.TouchEventData eventData) { // 接触点を軌道に追加する var touchPoint = new TouchPoint(eventData.x, eventData.y); this.orbit.Add(touchPoint); // 「タッチアップ」イベントハンドラを実行する var teArgs = new TouchEventArgs(touchPoint, this.orbit); OnTouchUp(teArgs); }
/// <summary> /// [内部メソッド] /// DOWN ベントを実行する /// </summary> /// <param name="eventData">イベントデータ</param> private void executeDownEvent(Win32ApiWrapper.TouchEventData eventData) { // タッチ操作のデータを初期化する resetFields(); // タッチの基準点を保持しておく this.touchDownTime = DateTime.Now; this.baseTouchPoint = new TouchPoint(eventData.x, eventData.y); // 接触点を軌道に追加する this.orbit.Add(this.baseTouchPoint); // 「タッチダウン」イベントハンドラを実行する var teArgs = new TouchEventArgs(this.baseTouchPoint, this.orbit); OnTouchDown(teArgs); }
/// <summary> /// [内部メソッド] /// 基本イベントを割り当てる /// </summary> /// <param name="eventData">イベントデータ</param> private void allocateBasicEvent(Win32ApiWrapper.TouchEventData eventData) { // タッチイベントフラグを取得する Win32ApiWrapper.TouchEventFlags eventFlags = eventData.dwEventFlags; if (eventFlags.IsDown()) { executeDownEvent(eventData); } else if (eventFlags.IsMove()) { executeMoveEvent(eventData); } else if (eventFlags.IsUp()) { executeUpEvent(eventData); } }
/// <summary> /// [内部メソッド] /// MOVE イベントを実行する /// </summary> /// <param name="eventData">イベントデータ</param> private void executeMoveEvent(Win32ApiWrapper.TouchEventData eventData) { // 移動距離が規定の間隔に満たない場合は処理しない TouchPoint lastTouchPoint = this.orbit.Last(); int distance = Calculator.CalcurateDistance(lastTouchPoint.X, lastTouchPoint.Y, eventData.x, eventData.y); if (distance < this.moveIntervalCentiPixel) { return; } //接触点を軌道に追加する var touchPoint = new TouchPoint(eventData.x, eventData.y); this.orbit.Add(touchPoint); // 「タッチムーブ」イベントハンドラを実行する var teArgs = new TouchEventArgs(touchPoint, this.orbit); OnTouchMove(teArgs); }
/// <summary> /// [内部メソッド] /// 基本イベントを割り当てる /// </summary> /// <param name="eventData">イベントデータ</param> private void allocateBasicEvent(Win32ApiWrapper.TouchEventData eventData) { Win32ApiWrapper.TouchEventFlags eventFlags = eventData.dwEventFlags; if ((eventFlags & Win32ApiWrapper.TouchEventFlags.DOWN) == Win32ApiWrapper.TouchEventFlags.DOWN) { // 「タッチダウン」イベントハンドラを実行する resetFields(); _touchDownTime = DateTime.Now; _baseTouchPoint = new TouchPoint(eventData.x, eventData.y); var teArgs = new TouchEventArgs(_baseTouchPoint, _orbit); _orbit.Add(_baseTouchPoint); OnTouchDown(teArgs); } else if ((eventFlags & Win32ApiWrapper.TouchEventFlags.MOVE) == Win32ApiWrapper.TouchEventFlags.MOVE) { // 移動距離が規定の間隔に満たない場合は処理しない TouchPoint lastTouchPoint = _orbit.Last(); int distance = Calculator.CalcurateDistance(lastTouchPoint.X, lastTouchPoint.Y, eventData.x, eventData.y); if (distance < _moveInterval) { return; } // 「タッチムーブ」イベントハンドラを実行する var touchPoint = new TouchPoint(eventData.x, eventData.y); var teArgs = new TouchEventArgs(touchPoint, _orbit); _orbit.Add(touchPoint); OnTouchMove(teArgs); } else if ((eventFlags & Win32ApiWrapper.TouchEventFlags.UP) == Win32ApiWrapper.TouchEventFlags.UP) { // 「タッチアップ」イベントハンドラを実行する var touchPoint = new TouchPoint(eventData.x, eventData.y); var teArgs = new TouchEventArgs(touchPoint, _orbit); _orbit.Add(touchPoint); OnTouchUp(teArgs); } }