using System.Windows;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using Microsoft.Phone.Controls;

namespace Controls.Pages
{
    public partial class InkPresenterPage : PhoneApplicationPage
    {
        private Stroke currentStroke;  

        public InkPresenterPage()
        {
            InitializeComponent();
        }

        // Ereignismethode sobald eine Bewegung auf dem InkPresenter durchgefuehrt wird
        private void myInkPresenter_MouseMove(object sender, MouseEventArgs e)
        {
            // Bewegungspunkte der Stroke Instanz hinzufuegen    
            if (currentStroke != null)  
                currentStroke.StylusPoints.Add(GetStylusPoint(e.GetPosition(myInkPresenter))); 
        }

        // Ereignismethode sobald eine Beruehrung auf dem InkPresenter stattfindet
        private void myInkPresenter_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            // Bewegung auf dem InkPresenter aufzeichnen
            myInkPresenter.CaptureMouse();
            // Zeichenmine mit schwarzeer Farbe erstellen und gespeicherte Bewegungspunkte hinzufuegen 
            currentStroke = new Stroke();
            currentStroke.DrawingAttributes.Color = Colors.Black;           
            currentStroke.StylusPoints.Add(GetStylusPoint(e.GetPosition(myInkPresenter)));
            // Stroke Instanz an InkPresenter binden
            myInkPresenter.Strokes.Add(currentStroke);
        }

        // Ereignismethode sobald eine Beruehrung auf dem InkPresenter aufhoert
        private void myInkPresenter_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            currentStroke = null;  
        }

        // Liefert die x und y Koordinate des Beruerhrungspunktes zureuck
        private StylusPoint GetStylusPoint(Point position)
        {
            return new StylusPoint(position.X, position.Y);
        }
    }
}