void XamlCanvas_TouchMove(object sender, TouchEventArgs e)
        {
            var         id = new IntPtr(e.TouchDevice.Id);
            CanvasTouch t;

            if (!_activeTouches.TryGetValue(id, out t))
            {
                return;
            }

            t.SuperCanvasPreviousLocation = t.SuperCanvasLocation;
            t.CanvasPreviousLocation      = t.CanvasLocation;
            t.PreviousTime = t.Time;

            var spt = e.GetTouchPoint((FrameworkElement)Parent);
            var pt  = e.GetTouchPoint(this);

            t.CanvasLocation      = new PointF((float)pt.Position.X, (float)pt.Position.Y);
            t.SuperCanvasLocation = new PointF((float)spt.Position.X, (float)spt.Position.Y);
            t.Time = DateTime.UtcNow;

            if (Content != null)
            {
                Content.TouchesMoved(new[] { t });
            }
        }
示例#2
0
        private void EnlargeImage_DownTouch(object sender, TouchEventArgs e)
        {
            lastDownPosX = e.GetTouchPoint(this).Position.X;
            lastDownPosY = e.GetTouchPoint(this).Position.Y;

            ResetCollapseTimer(collapseDelay);
        }
示例#3
0
        /// <summary>
        /// Registers the touchpoints and stores them in the key fields.
        /// </summary>
        /// <param name="e">Returns value for the handled parameter of the event arguments.</param>
        /// <returns>Event handled sate.</returns>
        private bool RegisterTouchPoints(TouchEventArgs e)
        {
            // Register second finger down and save it.
            if (_firstPoint.Key != null && e.TouchDevice.Id != (int)_firstPoint.Key && _secondPoint.Key == null && !_isDragAndDropAction)
            {
                //Disable Scrolling
                DisableTasboardScrolling();

                _secondPoint = new DictionaryEntry(e.TouchDevice.Id, e.GetTouchPoint(_owner));
                AddPositionToQueue(_fingerTwoPositions, ((TouchPoint)_secondPoint.Value).Position.X);

                // Two finger operations are always zoom operations.
                IsZooming = true;

                // This event cannot be a click and therefor is considered handled.
                return(true);
            }

            // Register first finger down an save it.
            if (_firstPoint.Key == null)
            {
                //Enable Scrolling
                EnableTasboardScrolling();

                _firstPoint = new DictionaryEntry(e.TouchDevice.Id, e.GetTouchPoint(_owner));
                AddPositionToQueue(_fingerOnePositions, ((TouchPoint)_firstPoint.Value).Position.X);

                // This event cannot be a click and therefor is considered handled.
                return(true);
            }

            return(false);
        }
示例#4
0
        protected override void OnPreviewTouchDown(TouchEventArgs e)
        {
            currentTouchPoint = e.GetTouchPoint(this);

            tile = null;

            // Save starting point, used later when determining how much to scroll.
            scrollTouchStartPoint = e.GetTouchPoint(this);
            scrollStartOffset.X   = sv.HorizontalOffset;
            scrollStartOffset.Y   = sv.VerticalOffset;

            scrollStartPoint.X = scrollTouchStartPoint.Position.X;
            scrollStartPoint.Y = scrollTouchStartPoint.Position.Y;

            //store Control if one was found, so we can call its command later
            var x = TreeHelper.TryFindFromPoint <ListBoxItem>(this, scrollStartPoint);

            if (x != null)
            {
                x.IsSelected = true;
                ItemsControl tiles = ItemsControl.ItemsControlFromItemContainer(x);
                var          data  = tiles.ItemContainerGenerator.ItemFromContainer(x);
                if (data != null && data is IPanoramaTile)
                {
                    tile = (IPanoramaTile)data;
                    // JH Start - See IPanoramaTile for justification
                    tile.IsPressed = true;
                    // JH End - See IPanoramaTile for justification
                }
            }

            //this.CaptureTouch(TouchesCaptured.First<TouchDevice>());

            base.OnPreviewTouchDown(e);
        }
        private void _handleTouchMove(TouchEventArgs e)
        {
            if (this.InkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint)
            {
                this._removeStroke(e.Device, e.GetTouchPoint(this).Position);
                e.Handled = true;
                return;
            }

            if (this._strokes.ContainsKey(e.Device) && this._currentStroke.ContainsKey(e.Device))
            {
                Stroke stroke             = this._currentStroke[e.Device];
                StylusPointCollection sps = stroke.StylusPoints;
                if (sps != null)
                {
                    TouchPoint tp = e.GetTouchPoint(this);
                    Point      p  = tp.Position;
                    this._addPointToStroke(e.Device, p);
                }
            }
            else
            {
                TouchPoint tp = e.GetTouchPoint(this);
                this._startStroke(e.Device, tp.Position);
            }
            e.Handled = true;
        }
示例#6
0
        private async void LessonContainer_TouchDown(object sender, TouchEventArgs e)
        {
            // Forward touch events to container
            //FrameworkElement control = sender as FrameworkElement;
            //control.CaptureTouch(e.TouchDevice);
            if (LayerStackDC.CurrentState.FingerInkingEnabled)
            {
                LessonContainer.IsContentManipulationEnabled = false;
                return;
            }

            // Saves current touch information
            //touchDevices.Add(e.TouchDevice);
            touchOrigin = e.GetTouchPoint(LessonContainer).Position;

            // Disable manipulation/drawing
            //LessonContainer.IsContentManipulationEnabled = false;
            LayerStackDC.ContainerTouchDown();

            // If touch-and-hold (within 10px radius circle, over 500ms)
            if (await TouchHelper.TouchHold(e, LessonContainer, 500, 10))
            {
                // Opens RadialMenu
                LessonContainer.IsContentManipulationEnabled = false;
                LayerStackDC.OpenRadialMenu(LayerStackDC.Viewport.GetViewport(),
                                            e.GetTouchPoint(LessonContainer).Position, RadialMenuState.Levels.Main);

                // Un-forward touch events to container
                //control.ReleaseAllTouchCaptures();
            }
        }
示例#7
0
        private void UpdatePointerForEvent(ReactPointer pointer, TouchEventArgs e)
        {
            var rootPoint = e.GetTouchPoint(_view);
            var viewPoint = e.GetTouchPoint(pointer.ReactView);

            UpdatePointerForEvent(pointer, rootPoint.Position, viewPoint.Position);
        }
示例#8
0
 private void Can_PreviewTouchMove(object sender, TouchEventArgs e)
 {
     if (e.OriginalSource is TextBlock)
     {
         Canvas.SetLeft(grid, e.GetTouchPoint(this).Position.X - point.X);
         Canvas.SetTop(grid, e.GetTouchPoint(this).Position.Y - point.Y);
     }
 }
示例#9
0
 private void menuItemListView_TouchDrag(object sender, TouchEventArgs t)
 {
     if (prevTouchPoint == 0)
     {
         prevTouchPoint = t.GetTouchPoint(this).Position.Y;
     }
     menuItemScrollViewer.ScrollToVerticalOffset(menuItemScrollViewer.VerticalOffset - (t.GetTouchPoint(this).Position.Y - prevTouchPoint));
     prevTouchPoint = t.GetTouchPoint(this).Position.Y;
 }
示例#10
0
        private void SurfaceWindow_TouchDown(object sender, TouchEventArgs e)
        {
            //test
            Ellipse handRange = new Ellipse();

            handRange.Fill   = System.Windows.Media.Brushes.DeepPink;
            handRange.Width  = 100;
            handRange.Height = 100;
            TranslateTransform Pos = new TranslateTransform();

            Pos.X = (int)e.GetTouchPoint(this).Position.X; //-this.Width/2;
            Pos.Y = (int)e.GetTouchPoint(this).Position.Y; //-this.Height/2;
            handRange.RenderTransform = null;
            handRange.RenderTransform = Pos;
            // HandRange.
            DrawingCanvas.Children.Add(handRange);

            //testover


            int X = (int)e.GetTouchPoint(this).Position.X;
            int Y = (int)e.GetTouchPoint(this).Position.Y;

            watchingWindow.getHands((int)this.Width, (int)this.Height);
            Console.Out.WriteLine(watchingWindow.GetUser(X, Y, (int)this.Width, (int)this.Height));
            Dictionary <String, System.Drawing.Point> Hands = watchingWindow.getHands(WindowsWidth, WindowsHeight);

            foreach (KeyValuePair <String, System.Drawing.Point> pair in Hands)
            {
                System.Drawing.Point HandPoint = pair.Value;
                String HandString = pair.Key;
                //Console.Out.WriteLine("Hand in " + HandPoint.X + " , " + HandPoint.Y);
                if (HandPoint.X != 0 && HandPoint.Y != 0)
                {
                    if (HandPoint.X < (int)this.Width && HandPoint.Y < (int)this.Height)
                    {
                        Ellipse HandRange = new Ellipse();
                        HandRange.Fill   = System.Windows.Media.Brushes.DarkBlue;
                        HandRange.Width  = 100;
                        HandRange.Height = 100;
                        TranslateTransform pos = new TranslateTransform();
                        pos.X = HandPoint.X; //-this.Width/2;
                        pos.Y = HandPoint.Y; // -this.Height / 2;
                        HandRange.RenderTransform = null;
                        HandRange.RenderTransform = pos;
                        // HandRange.

                        DrawingCanvas.Children.Add(HandRange);
                        Console.Out.WriteLine(HandString + " in " + HandPoint.X + " , " + HandPoint.Y);
                    }
                }
            }
        }
示例#11
0
        private void touchMove(object sender, TouchEventArgs e)
        {
            float touchX = (float)e.GetTouchPoint(planet).Position.X;
            float touchY = (float)e.GetTouchPoint(planet).Position.Y;
            float dX     = touchX - lastX;
            float dY     = touchY - lastY;

            foreach (Ball b in ballList)
            {
                b.push(dX, dY, touchX, touchY);
            }
            lastX = touchX;
            lastY = touchY;
        }
示例#12
0
        private void EnlargeImage_UpTouch(object sender, TouchEventArgs e)
        {
            double currentUpPosX = e.GetTouchPoint(this).Position.X;
            double currentUpPosY = e.GetTouchPoint(this).Position.Y;

            if (Math.Abs(currentUpPosX - lastDownPosX) + Math.Abs(currentUpPosY - lastDownPosY) < 20)
            {
                EnlargeImage(((Image)sender).Source);
                lastDownPosX = Double.NegativeInfinity;
                lastDownPosY = Double.NegativeInfinity;
            }

            ResetCollapseTimer(collapseDelay);
        }
示例#13
0
        private void m_touchmove(object sender, TouchEventArgs e)
        {
            if (m_textbox != null)
            {
                m_textbox.Text += "m_touchmove" + e.GetTouchPoint(this.m_canvas).Position.ToString() + "\n";
            }
            var deviceid = e.TouchDevice.Id;
            var line     = getLine(deviceid);

            if (line != null)
            {
                line.Points.Add(e.GetTouchPoint(this.m_canvas).Position);
            }
        }
 private void LowerGrid_PreviewTouchMove(object sender, TouchEventArgs e)
 {
     if (HandleDrag(elem => e.GetTouchPoint(elem).Position))
     {
         e.Handled = true;
     }
 }
示例#15
0
        private void SprintMenu_PreviewTouchMove(object sender, TouchEventArgs e)
        {
            //Update position of point
            if (currentPoint.ContainsKey(e.Device))
            {
                currentPoint[e.Device] = e.GetTouchPoint(null).Position;
            }
            //Set border thickness to default
            foreach (GroupBox col in columns)
            {
                col.BorderThickness = new Thickness(1);
            }
            //Verify each points to change border thickness if in bounds
            foreach (KeyValuePair <InputDevice, Point> keyValuePair in currentPoint)
            {
                Point p = keyValuePair.Value;
                foreach (GroupBox col in columns)
                {
                    double leftBound   = Canvas.GetLeft(col);
                    double rightBound  = leftBound + col.Width;
                    double topBound    = Canvas.GetTop(col);
                    double bottomBound = topBound + col.Height;

                    if (p.X > leftBound && p.X < rightBound &&
                        p.Y > topBound && p.Y < bottomBound)
                    {
                        col.BorderThickness = new Thickness(3);
                    }
                }
            }
        }
示例#16
0
        private void SprintMenu_PreviewTouchUp(object sender, TouchEventArgs e)
        {
            if (currentPoint.ContainsKey(e.Device))
            {
                //Search the contained groupbox
                Point    p        = e.GetTouchPoint(null).Position;
                GroupBox gbxState = null;
                foreach (GroupBox col in columns)
                {
                    double leftBound   = Canvas.GetLeft(col);
                    double rightBound  = leftBound + col.Width;
                    double topBound    = Canvas.GetTop(col);
                    double bottomBound = topBound + col.Height;
                    if (p.X > leftBound && p.X < rightBound &&
                        p.Y > topBound && p.Y < bottomBound)
                    {
                        gbxState = col;
                        break;
                    }
                }
                //if release in a groupbox, change state
                if (gbxState != null)
                {
                    gbxState.BorderThickness = new Thickness(1);

                    State     state     = gbxState.Tag as State;
                    UserStory userStory = (infos[e.Device] as UserControl).Tag as UserStory;
                    controller.UserStorySwitchState(userStory, state);
                }
                currentPoint.Remove(e.Device);
                infos.Remove(e.Device);
                Refresh();
            }
        }
示例#17
0
 private void Canvas_PreviewTouchMove(object sender, TouchEventArgs e)
 {
     if (currentPoint.ContainsKey(e.Device))
     {
         currentPoint[e.Device] = e.GetTouchPoint(null).Position;
     }
 }
示例#18
0
        /// <summary>
        /// Actions when touch enters.
        /// </summary>
        /// <param name="sender">Sender.</param>
        /// <param name="e">Arguments.</param>
        protected void OnTouchEnter(object sender, TouchEventArgs e)
        {
            if (InputService == null)
            {
                return;
            }

            var element = sender as FrameworkElement;

            if (element == null)
            {
                return;
            }

            var position = e.GetTouchPoint(element).Position;

            var args = new PointerEventArgs(
                Waves.Core.Base.Enums.MouseButton.None,
                PointerEventType.Enter,
                0,
                new Waves.Core.Base.Point(),
                new Waves.Core.Base.Point((int)position.X, (int)position.Y));

            InputService.SetPointer(args);
        }
        private void MoverScrollByTouch(TouchEventArgs e)
        {
            var actualPosition = e.GetTouchPoint(this.TextBlockTitulo).Position;

            var diffPosition = actualPosition.Y - LastPosition.Y;

            if ((diffPosition > -10) & (diffPosition < 10))
            {
                TouchMoved = false;
                return;
            }
            ;

            double offset = this.ScrollViewerCategorias.VerticalOffset - (diffPosition / 10);

            if (actualPosition.Y > LastPosition.Y)
            {
                this.ScrollViewerCategorias.ScrollToVerticalOffset(offset);
                TouchMoved = true;
                e.Handled  = true;
            }
            else
            {
                this.ScrollViewerCategorias.ScrollToVerticalOffset(offset);
                TouchMoved = true;
                e.Handled  = true;
            }
        }
        protected override void OnTouchUp(TouchEventArgs e)
        {
            if (!this.IsManipulationEnabled)
            {
                return;
            }

            Point    currentTapPosition     = e.GetTouchPoint(this).Position;
            var      difference             = currentTapPosition - lastTapLocation;
            bool     tapsAreCloseInDistance = Math.Abs(difference.X) < 20 && Math.Abs(difference.Y) < 20;
            TimeSpan elapsed            = touchDownStopwatch.Elapsed;
            bool     tapsAreCloseInTime = (elapsed != TimeSpan.Zero && elapsed < TimeSpan.FromSeconds(0.7));

            if (tapsAreCloseInDistance)
            {
                if (tapsAreCloseInTime)
                {
                    TouchTap?.Invoke(this, e);
                }
                else
                {
                    OpenRightClick_Menu?.Invoke(this, new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Left));
                }
            }
            else
            {
                currentTapPosition.X = -9999999999; // Ensures that no double taps get registered.
            }
            base.OnTouchUp(e);
            ReleaseMouseCapture();
        }
示例#21
0
 private void scrollDishes_PreviewTouchMove(object sender, TouchEventArgs e)
 {
     if (lastDragPoint.HasValue)
     {
         doMove(e.GetTouchPoint((sender as IInputElement)).Position);
     }
 }
        private void DragDropContainer_TouchMove(object sender, TouchEventArgs e, GalaxyAdorner adorner)
        {
            var touchPosition   = e.GetTouchPoint(DragOverlay);
            var adornerLocation = new Point(touchPosition.Position.X, touchPosition.Position.Y);

            adorner.UpdatePosition(adornerLocation);
        }
示例#23
0
        private void MainWindow_TouchMove(object sender, TouchEventArgs e)
        {
            int n = 2;

            var base64FormattingOptions = Base64FormattingOptions.InsertLineBreaks;

            for (int i = 0; i < 100; i++)
            {
                var f1 = n;
            }

            if (true)
            {
                var f2 = base64FormattingOptions;
            }

            var touchPoint = e.GetTouchPoint(this);
            var point      = touchPoint.Position;

            EraserView.X = point.X - EraserView.Width / 2;
            EraserView.Y = point.Y - EraserView.Height / 2;

            EraserInkView.Count++;

            Debug.WriteLine($"TTTTTTTTTTTT {EraserInkView.Count:D5} " + Environment.TickCount);

            TouchTickCount = Environment.TickCount;
        }
示例#24
0
        private void OnTouchPressed(object sender, TouchEventArgs e)
        {
            var originalSource = e.OriginalSource as DependencyObject;
            var rootPoint      = e.GetTouchPoint(_view);
            var reactView      = GetReactViewTarget(originalSource, rootPoint.Position);

            if (reactView != null && _view.CaptureTouch(e.TouchDevice))
            {
                var viewPoint = rootPoint.Position;
                var reactTag  = reactView.GetReactCompoundView().GetReactTagAtPoint(reactView, viewPoint);
                var pointer   = new ReactPointer();
                pointer.Target                 = reactTag;
                pointer.PointerId              = (uint)rootPoint.TouchDevice.Id;
                pointer.Identifier             = ++_pointerIDs;
                pointer.PointerType            = "touch";
                pointer.IsLeftButton           = false;
                pointer.IsRightButton          = false;
                pointer.IsMiddleButton         = false;
                pointer.IsHorizontalMouseWheel = false;
                pointer.IsEraser               = false;
                pointer.ReactView              = reactView;
                UpdatePointerForEvent(pointer, rootPoint.Position, viewPoint);

                var pointerIndex = _pointers.Count;
                _pointers.Add(pointer);
                DispatchTouchEvent(TouchEventType.Start, _pointers, pointerIndex);
            }
        }
示例#25
0
        private void LayoutRoot_TouchMove(object sender, TouchEventArgs e)
        {
            if (_touchDevicesPoints.Count != 2)
            {
                return;
            }
            else
            {
                Point newPoint      = e.GetTouchPoint(LayoutRoot).Position;
                Point previousPoint = _touchDevicesPoints[e.TouchDevice];

                if (!newPoint.Equals(previousPoint))
                {
                    _touchDevicesPoints[e.TouchDevice] = newPoint;

                    List <Point> points = new List <Point>(_touchDevicesPoints.Values);

                    double newTouchZoomDistance = Point.Subtract(points[0], points[1]).Length;

                    double diff = newTouchZoomDistance - _touchZoomDistance;

                    if (Math.Abs(diff) > 5)
                    {
                        TrackballTransform = _trackBall.Zoom(newTouchZoomDistance, _touchZoomDistance);
                        _touchZoomDistance = newTouchZoomDistance;
                    }
                }

                e.Handled = true;
            }
        }
示例#26
0
 private void canvas_TouchDown(object sender, TouchEventArgs e)
 {
     // Get a number between 1 and 10 to select colour
     counter = (counter + 1) % 10;
     // Add new object for this id
     userLines[e.TouchDevice.Id] = new UserLine(colours[counter], e.GetTouchPoint(canvas));
 }
        private void ReferPanel_TouchMove(object sender, TouchEventArgs e)
        {
            if (_calculator is null)
            {
                return;
            }

            var touchPoint = e.GetTouchPoint(RootPanel);
            var delta      = _calculator.Move(e.TouchDevice.Id, touchPoint.Position);

            var scale       = delta.Scale;
            var expansion   = delta.Expansion;
            var rotation    = delta.Rotation;
            var translation = delta.Translation;

            SelfScaleRun.Text       = $"{scale.X:0.0000} × {scale.Y:0.0000}";
            SelfExpansionRun.Text   = $"{expansion.X:0.0000} × {expansion.Y:0.0000}";
            SelfRotationRun.Text    = $"{rotation:0.0000}";
            SelfTranslationRun.Text = $"{translation.X:0.0000} × {translation.Y:0.0000}";

            SelfScaleTransform.ScaleX *= scale.X;
            SelfScaleTransform.ScaleY *= scale.Y;
            SelfRotateTransform.Angle += rotation;
            SelfTranslateTransform.X  += translation.X;
            SelfTranslateTransform.Y  += translation.Y;

            SelfAccumulatedScaleRun.Text       = $"{SelfScaleTransform.ScaleX:0.0000} × {SelfScaleTransform.ScaleY:0.0000}";
            SelfAccumulatedExpansionRun.Text   = $"未计算";
            SelfAccumulatedRotationRun.Text    = $"{SelfRotateTransform.Angle:0.0000}";
            SelfAccumulatedTranslationRun.Text = $"{SelfTranslateTransform.X:0.0000} × {SelfTranslateTransform.Y:0.0000}";
        }
示例#28
0
        private void Sprint_PreviewTouchUp(object sender, TouchEventArgs e)
        {
            if (currentPoint.ContainsKey(e.Device))
            {
                currentPoint[e.Device] = e.GetTouchPoint(null).Position;
                UserControl sprintControl = sender as UserControl;
                sprintControl.BorderThickness = new Thickness(1);
                double leftBound   = Canvas.GetLeft(sprintControl) + Canvas.GetLeft(gbxSprints);
                double rightBound  = leftBound + sprintControl.Width;
                double topBound    = Canvas.GetTop(sprintControl) + Canvas.GetTop(cnvsSprints);
                double bottomBound = topBound + sprintControl.Height;

                Sprint    sprint    = sprintControl.Tag as Sprint;
                UserStory userStory = (infos[e.Device] as UserControl).Tag as UserStory;

                if (controller.AddUserStoryToSprint(userStory, sprint))
                {
                    Task.Factory.StartNew(() => MessageBox.Show("Enregistrement rajouté", "Confirmation", MessageBoxButton.OK, MessageBoxImage.Information));
                }
                else
                {
                    Task.Factory.StartNew(() => MessageBox.Show("Enregistrement déjà existant", "Erreur", MessageBoxButton.OK, MessageBoxImage.Error));
                }

                currentPoint.Remove(e.Device);
                infos.Remove(e.Device);
            }
        }
示例#29
0
        public void TouchMoveCard(Canvas element, TouchEventArgs e)
        {
            TouchPoint point = e.GetTouchPoint(control.MainWindow.CardLayer);

            control.TouchControler.TouchMove(this, this.GetType(), e.TouchDevice, point);
            control.MainWindow.ControlWindow.UpdateTextInfo(control.TouchControler.ToString(), 1);
        }
        private void GestureButton_TouchDown(object sender, TouchEventArgs e)
        {
            // 找到目标窗口
            _hwnd = WindowsHandler.FindTopmostWindow();

            // 初始化起始点
            int   id    = e.TouchDevice.Id;
            Point start = this.PointToScreen(new Point(e.GetTouchPoint(this).Position.X, e.GetTouchPoint(this).Position.Y));

            if (finger1.Count == 0)
            {
                finger1.Add(id, new List <YTPoint>()
                {
                    new YTPoint(start.X, start.Y)
                });
                _watch1 = Stopwatch.StartNew();
            }
            else
            {
                finger2.Add(id, new List <YTPoint>()
                {
                    new YTPoint(start.X, start.Y)
                });
                _watch2 = Stopwatch.StartNew();
            }

            // 初始化点击时间
            _watch1 = Stopwatch.StartNew();
            _watch2 = Stopwatch.StartNew();
        }
        private void CanvasGallery_SwipeStarted(object sender, TouchEventArgs args)
        {
            args.Handled = true;

            this.swipePivotPosition = args.GetTouchPoint(this.canvasGallery).Position;
            this.swipePivotOffset = this.Offset;

            this.RaiseGestureChanged("Swipe");
        }