public MainWindow()
        {
            Stopwatch = new Stopwatch();
            Stopwatch.Start();
            TickCounts     = new List <long>();
            Lights         = new List <HexLine>();
            MainController = new MainController();
            var initialisedServices = MainController.InitialiseServices(this);

            //DisplayService = initialisedServices.OfType<DisplayProgrammaticService>().FirstOrDefault();
            //DisplayController = new DisplayController();
            InitializeComponent();
            loadPreviousSettings();
            Tableau        = new Canvas();
            Grid           = new BaseGrid(Height, Width, Tableau);
            Tableau.Width  = Width;
            Tableau.Height = Height;

            Tableau.Background = Brushes.LightGray;
            Content            = Tableau;
            var greenLattice = new TriangularLattice(Grid, Orientation.Horizontal, LatticeTypeEnum.Green, true);

            if (Hex.ShowGridLines)
            {
                createGridBuilder(greenLattice);
            }
            var testPoint = new Ellipse();

            testPoint.Height = 20;
            testPoint.Width  = 20;
            testPoint.Fill   = Brushes.Chartreuse;
            //Grid.AddShape(testPoint, greenLattice.Sites[20].Location);



            Label = new TextBlock()
            {
                Text = "000.00", FontSize = 15
            };
            Canvas.SetLeft(Label, 500);
            Tableau.Children.Add(Label);

            //var label = new TextBlock() { Text = Period.ToString() };
            //label.
            //Canvas.SetLeft(label,400);
            //Tableau.Children.Add(label);
            Lights.AddRange(greenLattice.GridLines.Values);
            //var redLattice = new TriangularLattice(Grid, Orientation.Horizontal, LatticeTypeEnum.Red);
            // var blueLattice = new TriangularLattice(Grid, Orientation.Horizontal, LatticeTypeEnum.Blue);
            // var blueLattice = new TriangularLattice(Grid, 20, Orientation.Vertical, LatticeTypeEnum.Blue);
            //var redLattice = new TriangularLattice(Grid,10, Orientation.Vertical, LatticeTypeEnum.Red);

            //var cellSize = 50;
            //var gridOrigin = new Coord(cellSize * 2, cellSize * 2);
            //var hGrid = new HexGrid(15, 15, cellSize, gridOrigin);
            //DrawGrid(hGrid,addVertexIds:true);
            //Console.WriteLine(hGrid.AllVertices.Count);
            //Console.WriteLine(hGrid.AllChannels.Count);
            Closing += mainWindowClosing;
        }
 private void createGridBuilder(TriangularLattice lattice)
 {
     var gridBuilder = Task.Run(() =>
     {
         foreach (var site in lattice.Sites)
         {
             App.Current.Dispatcher.Invoke(() => lattice.AddGridLines(site.Value));
             Thread.Sleep(100);
         }
     });
 }
 public void TriangularLattice_Test1()
 {
     var lattice = new TriangularLattice(null, Orientation.Horizontal, LatticeTypeEnum.Red);
 }