示例#1
0
        // Undo the last stroke
        private void undo_click(object sender, RoutedEventArgs e)
        {
            CustomInkCanvas.CustomInkCanvas canvas = sender as CustomInkCanvas.CustomInkCanvas;
            Console.WriteLine("Undo count: {0}", canvas.Strokes.Count);

            int    strokesDeleteIndex = canvas.Strokes.Count;
            string tag = (canvas == canvasRight) ? "Blue" : "Red";

            while (strokesDeleteIndex > 0)
            {
                if (canvas.Strokes[strokesDeleteIndex - 1].GetPropertyData(metadataGuid) as string == tag)
                {
                    if (tag == "Blue")
                    {
                        _undoRightStrokesStack.Push(canvasLeft.Strokes[strokesDeleteIndex - 1]);
                    }
                    else
                    {
                        _undoLeftStrokesStack.Push(canvasLeft.Strokes[strokesDeleteIndex - 1]);
                    }
                    // Remove the element
                    canvasRight.Strokes.RemoveAt(strokesDeleteIndex - 1);
                    canvasLeft.Strokes.RemoveAt(strokesDeleteIndex - 1);
                    break;
                }
                strokesDeleteIndex--;
            }
        }
示例#2
0
        private void OnStylusPointsCollectedRight(CustomInkCanvas.CustomInkCanvas c, StylusPointCollection s)
        {
            Stroke stroke = new Stroke(s);

            stroke.DrawingAttributes = SetAttributes(Colors.Blue);
            canvasLeft.Strokes.Add(stroke);
            tempStrokeCollection.Add(stroke);
        }
示例#3
0
        // Redo last Undo operation
        private void redo_click(object sender, RoutedEventArgs e)
        {
            Console.WriteLine("Redo count: {0}", canvasLeft.Strokes.Count);
            CustomInkCanvas.CustomInkCanvas canvas = sender as CustomInkCanvas.CustomInkCanvas;

            Stack <Stroke> undoneStrokes = (canvas == canvasLeft) ? _undoLeftStrokesStack : _undoRightStrokesStack;
            int            strokesCount  = undoneStrokes.Count;

            if (strokesCount > 0)
            {
                var stroke = undoneStrokes.Pop();
                canvasRight.Strokes.Insert(canvasRight.Strokes.Count, stroke);
                canvasLeft.Strokes.Insert(canvasLeft.Strokes.Count, stroke);
            }
        }