Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }