/// <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); }