private void MainCanvas_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Canvas canvas = sender as Canvas;

            if (canvas == null)
            {
                return;
            }
            if (medianMode)
            {
                if (lastClickedLine != null)
                {
                    Line   median = lastClickedLine.GetMedian(e.GetPosition(canvas));
                    MyLine line   = new MyLine(median);
                    lines.Add(median, line);
                    MainCanvas.Children.Add(median);

                    medianMode = false;
                }

                return;
            }

            if (heightMode)
            {
                if (lastClickedLine != null)
                {
                    Line   height = lastClickedLine.GetHeight(e.GetPosition(canvas));
                    MyLine line   = new MyLine(height);
                    lines.Add(height, line);
                    MainCanvas.Children.Add(height);

                    heightMode = false;
                }

                return;
            }

            HitTestResult hitTestResult = VisualTreeHelper.HitTest(canvas, e.GetPosition(canvas));

            if (hitTestResult.VisualHit is Line selectedLine)
            {
                if (morphingLine != null && selectedLine == morphingLine)
                {
                    return;
                }
                ICanvasObject myLine = lines[selectedLine];

                if (Keyboard.IsKeyDown(Key.LeftCtrl) == false)
                {
                    foreach (var line in currentSelection)
                    {
                        line.Deselect();
                    }
                    currentSelection.Clear();
                    currentGroupSelection.Clear();
                }

                //Select new element
                if (currentSelection.Contains(myLine) == false)
                {
                    myLine.Select();
                    currentSelection.Add(myLine);
                    currentSelection.Last().Select();
                    lastClickedLine = selectedLine;
                    lbEquation.Text = $"Уравнение: {lastClickedLine.GetLineConstants()}";
                }
            }
            else if (hitTestResult.VisualHit is Canvas)
            {
                foreach (var line in currentSelection)
                {
                    line.Deselect();
                }
                currentSelection.Clear();
            }

            //Save mouse position
            previousMousePosition = e.GetPosition(canvas);
            isMousePressed        = true;
        }