void Device_StackingTouchEvent(object sender, StackingTouchEventArgs e) { Dispatcher.Invoke(DispatcherPriority.Background, (Action)delegate() { UIThreadDevice_StackingTouchEvent(sender, e); }); }
private void UIThreadDevice_StackingTouchEvent(object sender, StackingTouchEventArgs e) { if (e.Action == TouchAction.Down) { StylusPointCollection points = new StylusPointCollection(); points.Add(new StylusPoint(e.Location.X, e.Location.Y)); stackingSelectionStroke = new Stroke(points, inkCScribble.DefaultDrawingAttributes); inkCScribble.Strokes.Add(stackingSelectionStroke); } else if (e.Action == TouchAction.Move) { stackingSelectionStroke.StylusPoints.Add(new StylusPoint(e.Location.X, e.Location.Y)); foreach (ScribbleCollection collection in ActualDocument[ActualPage].ScribblingCollections) { foreach (Stroke stroke in collection.Scribbles) { if (!stroke.HitTest(e.Location)) continue; Synch.SendContent(ActualDocument.ID, ActualPage, stroke); } } var line = cHighlights.InputHitTest(e.Location); if (line == null || !(line is Line)) return; Highlight highlight = (Highlight)ActualDocument[ActualPage].Highlights.SingleOrDefault(tmp => (tmp as Highlight).Line == line); if (highlight == null) return; Synch.SendContent(ActualDocument.ID, ActualPage, highlight); } else if (e.Action == TouchAction.Up) { if (inkCScribble.Strokes.Contains(stackingSelectionStroke)) inkCScribble.Strokes.Remove(stackingSelectionStroke); } }