using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace WPMultiTouch1
{
    public partial class MainPage : PhoneApplicationPage
    {
        List<Ellipse> ellipses = new List<Ellipse>();

        // Constructor
        public MainPage()
        {
            InitializeComponent();
            Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);

        }
        void Touch_FrameReported(object sender, TouchFrameEventArgs e)
        {
            Random r = new Random();
            TouchPointCollection coll = e.GetTouchPoints(this);
            foreach (var point in coll)
            {
                //Ausgabe der ID des entsprechenden Fingers
                Debug.WriteLine(point.TouchDevice.Id);

                //Ein neuer Finger wurde erkannt
                if (point.Action == TouchAction.Down)
                {
                    //Erstellen einer neuen Ellipse
                    Ellipse ell = new Ellipse();
                    ell.Height = 180;
                    ell.Width = 180;
                    ell.Margin = new Thickness(0);
                    //Der Füllung der Ellipse eine zufällige Farbe zuweisen
                    ell.Fill = new SolidColorBrush(Color.FromArgb(
                    (byte)255,
                    (byte)r.Next(255),
                    (byte)r.Next(255),
                    (byte)r.Next(255)
                    ));
                    //Der Ellipse ein Objekt für die Transforation der Position hinzufügen
                    ell.RenderTransform = new TranslateTransform();
                    ell.RenderTransformOrigin = new Point(0, 0);
                    //Ellipse der Anwendungsoberfläche hinzufügen
                    ContentPanel.Children.Add(ell);
                    //Ellipse der Ellipsenaufzählung hinzufügen
                    ellipses.Insert(point.TouchDevice.Id, ell);
                    //Ellipse ausrichten
                    Canvas.SetLeft(ell, 0);
                    Canvas.SetTop(ell, 0);
                    //Ellipse an den Punkt des entspr. Fingers verschieben
                    ellipses[point.TouchDevice.Id].RenderTransform.Transform(point.Position);
                    ellipses[point.TouchDevice.Id].Visibility = System.Windows.Visibility.Visible;
                }
                //Ein Finger hat die Oberfläche verlassen
                else if (point.Action == TouchAction.Up)
                {
                    ellipses[point.TouchDevice.Id].Visibility = System.Windows.Visibility.Collapsed;
                }
                //Der Finger bewegt sich
                else
                {
                    (ellipses[point.TouchDevice.Id].RenderTransform as TranslateTransform).X = point.Position.X - 240;
                    (ellipses[point.TouchDevice.Id].RenderTransform as TranslateTransform).Y = point.Position.Y - 440;
                }

            }
            Debug.WriteLine("------------------------------------------");
        }

    }
}