/// <summary> /// 手描き入力終了を処理する. /// </summary> /// <param name="e"></param> private void ProcessEndStroke(PointerRoutedEventArgs e) { var pointerPoint = e.GetCurrentPoint(this.MainCanvas); Windows.UI.Xaml.Shapes.Polyline line; if (!this.pressedPointerDictionay.TryGetValue(pointerPoint.PointerId, out line)) { if (this.strokeCandidateDictionary.ContainsKey(pointerPoint.PointerId)) { this.strokeCandidateDictionary.Remove(pointerPoint.PointerId); } return; } var trace = new EndStrokeTrace() { Index = (uint)line.Tag, Position = pointerPoint.Position, Timestamp = DateTimeOffset.UtcNow.Ticks, }; // this.Item.InputRecorder.Add(trace); this.inputRecorderForNewTrace.Add(trace); EndStroke(trace); this.pressedPointerDictionay.Remove(pointerPoint.PointerId); }
/// <summary> /// 文字列にシリアライズされた手描き入力を復元する. /// </summary> /// <param name="text"></param> /// <returns></returns> private static InputTraceBase ParseTrace(string text) { JsonArray jsonArray; if (!JsonArray.TryParse(text, out jsonArray)) { return(null); } InputTraceKind kind; if (!Enum.TryParse(jsonArray.GetStringAt(0), out kind)) { return(null); } InputTraceBase trace; switch (kind) { case InputTraceKind.BeginStroke: trace = new BeginStrokeTrace(); break; case InputTraceKind.MoveStroke: trace = new MoveStrokeTrace(); break; case InputTraceKind.EndStroke: trace = new EndStrokeTrace(); break; case InputTraceKind.RemoveStroke: trace = new RemoveStrokeTrace(); break; case InputTraceKind.SetStrokeColor: trace = new SetStrokeColorTrace(); break; case InputTraceKind.SetStrokeThickness: trace = new SetStrokeThicknessTrace(); break; case InputTraceKind.SetBackgroundColor: trace = new SetBackgroundColorTrace(); break; case InputTraceKind.SetImage: trace = new SetImageTrace(); break; default: return(null); } trace.LoadFromJson(jsonArray); return(trace); }
/// <summary> /// 手描きの入力が終わったときに呼び出す. /// </summary> /// <param name="pointer"></param> private void EndStroke(EndStrokeTrace trace) { var elem = GetCanvasElement <Windows.UI.Xaml.Shapes.Polyline>(trace.Index); if (elem == null) { return; } elem.Points.Add(trace.Position); }