void InkingArea_PointerPressed(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
        {
            // Make sure no pointer is already inking (we allow only one 'active' pointer at a time)
            if (pointerId == -1)
            {
                var pointerPoint = e.GetCurrentPoint(InkingArea);

                rootPage.NotifyUser(" ", SDKTemplate.NotifyType.StatusMessage);

                // Determine ink manipulation mode
                switch (Helpers.GetPointerEventType(e))
                {
                case Helpers.PointerEventType.Erase:
                    rootPage.NotifyUser("Erase mode: draw a line across the ink you want to erase.", SDKTemplate.NotifyType.StatusMessage);
                    inkManager.Mode = Windows.UI.Input.Inking.InkManipulationMode.Erasing;
                    break;

                case Helpers.PointerEventType.Ink:
                    inkManager.Mode = Windows.UI.Input.Inking.InkManipulationMode.Inking;
                    renderer.EnterLiveRendering(pointerPoint, drawingAttributes);
                    break;

                case Helpers.PointerEventType.Select:
                    rootPage.NotifyUser("Select mode: draw a contour around the ink you want to select.", SDKTemplate.NotifyType.StatusMessage);
                    inkManager.Mode = Windows.UI.Input.Inking.InkManipulationMode.Selecting;
                    renderer.EnterLiveRendering(pointerPoint, lassoAttributes);
                    break;

                default:
                    return;     // pointer is neither inking nor erasing nor selecting: do nothing
                }

                // Clear selection
                inkManager.ClearSelection();
                renderer.UpdateSelection();
                AnchorSelection();

                inkManager.ProcessPointerDown(pointerPoint);

                pointerId = (int)pointerPoint.PointerId; // save pointer id so that no other pointer can ink until this one is released
            }
        }