public void Draw()

in Testing/SamplesTest/SamplesTest/MnistTest.cs [81:223]


        public void Draw(uint digit)
        {
            PointerInputDevice penDevice = new PointerInputDevice(PointerKind.Pen);
            ActionSequence sequence = new ActionSequence(penDevice, 0);
            Point canvasCoordiante = inkCanvas.Coordinates.LocationInViewport;
            switch (digit)
            {
                case 0:
                {
                    // drawing a circle around a center
                    // start from cos(0), sin(0)
                    var centerX = canvasCoordiante.X + inkCanvas.Size.Width / 2;
                    var centerY = canvasCoordiante.Y + inkCanvas.Size.Height / 2;
                    var radius = inkCanvas.Size.Width / 3;
                    var stepSize = 10;
                    DrawCircle(penDevice, sequence, centerX, centerY, radius, stepSize);
                    break;
                }
                case 1:
                    // (0,0)   (x,0)
                    //  ┌───────┐   Draw a basic line from top to bottom.
                    //  │   |   │  
                    //  │   |   │  
                    //  └───────┘ 
                    // (y,0)   (x,y)
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + inkCanvas.Size.Width / 2,
                        canvasCoordiante.Y + inkCanvas.Size.Height / 9,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + inkCanvas.Size.Width / 2,
                        canvasCoordiante.Y + 8 * inkCanvas.Size.Height / 9,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    // (0,0)   (x,0)
                    //  ┌───────┐   
                    //  │  / |  │   
                    //  │ ───── |   
                    //  │    |  │   
                    //  └───────┘   
                    // (y,0)   (x,y)
                    // vertical line
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + 2 * inkCanvas.Size.Width / 3,
                        canvasCoordiante.Y + inkCanvas.Size.Height / 8,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + 2 * inkCanvas.Size.Width / 3,
                        canvasCoordiante.Y + 5 * inkCanvas.Size.Height / 6,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
                    // horizontal line
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + inkCanvas.Size.Width / 4,
                        canvasCoordiante.Y + inkCanvas.Size.Height / 2,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + 3 * inkCanvas.Size.Width / 4,
                        canvasCoordiante.Y + inkCanvas.Size.Height / 2,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
                    // diagonal
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + inkCanvas.Size.Width / 4,
                        canvasCoordiante.Y + inkCanvas.Size.Height / 2,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + 2 * inkCanvas.Size.Width / 3,
                        canvasCoordiante.Y + inkCanvas.Size.Height / 8,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
                    break;
                case 5:
                    break;
                case 6:
                    break;
                case 7:
                    // (0,0)   (x,0)
                    //  ┌───────┐   
                    //  │ ───── |   
                    //  │    /  │   
                    //  │   /   │   
                    //  └───────┘   
                    // (y,0)   (x,y)
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + inkCanvas.Size.Width / 6,
                        canvasCoordiante.Y + inkCanvas.Size.Height / 6,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + 6 * inkCanvas.Size.Width / 6,
                        canvasCoordiante.Y + inkCanvas.Size.Height / 6,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerMove(
                        CoordinateOrigin.Viewport,
                        canvasCoordiante.X + 3 * inkCanvas.Size.Width / 6,
                        canvasCoordiante.Y + 5 * inkCanvas.Size.Height / 6,
                        TimeSpan.Zero));
                    sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
                    break;
                case 8:
                {
                    // two circles. Smaller circle on top of bigger circle
                    var centerX = canvasCoordiante.X + inkCanvas.Size.Width / 2;
                    var centerY = canvasCoordiante.Y + inkCanvas.Size.Height / 5 + inkCanvas.Size.Height / 10;
                    var radius = inkCanvas.Size.Height / 6;

                    var stepSize = 10;
                    DrawCircle(penDevice, sequence, centerX, centerY, radius, stepSize);
                    centerX = canvasCoordiante.X + inkCanvas.Size.Width / 2;
                    centerY = canvasCoordiante.Y + 3 * inkCanvas.Size.Height / 5 + inkCanvas.Size.Height / 10;
                    radius = Convert.ToInt32(1.4 * inkCanvas.Size.Height / 6);
                    DrawCircle(penDevice, sequence, centerX, centerY, radius, stepSize);
                    break;
                }
                case 9:
                    break;
                default:
                    Assert.Fail("wrong argument");
                    break;
            }
            session.PerformActions(new List<ActionSequence> { sequence });
        }