예제 #1
0
        /// <summary>
        ///  手描き描画用CanvasのRightTappedイベントを処理する.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainCanvas_RightTapped(object sender, RightTappedRoutedEventArgs e)
        {
            // 編集中以外は無視する
            if (!this.isEditingInternal)
            {
                return;
            }

            var stroke = e.OriginalSource as Windows.UI.Xaml.Shapes.Polyline;

            if ((stroke == null) || (stroke.Tag == null))
            {
                return;
            }

            e.Handled = true;
            var trace = new RemoveStrokeTrace()
            {
                Index     = (uint)stroke.Tag,
                Timestamp = DateTimeOffset.UtcNow.Ticks,
            };

            // this.Item.InputRecorder.Add(trace);
            this.inputRecorderForNewTrace.Add(trace);

            RemoveStroke(trace);
        }
예제 #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);
        }
예제 #3
0
        /// <summary>
        ///  手描きの入力を削除する.
        /// </summary>
        /// <param name="index"></param>
        private void RemoveStroke(RemoveStrokeTrace trace)
        {
            var elem = GetCanvasElement <UIElement>(trace.Index);

            if (elem == null)
            {
                return;
            }

            this.MainCanvas.Children.Remove(elem);
        }