/// <summary>
        /// Обработчик нажатий левой кнопки мыши. Подписка идёт при инициализации данного Page на LeftMouseDown на MapWindow.MainPanel
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void MouseLMBDown(object sender, MouseButtonEventArgs e)
        {
            if (FirstPointWaiting)
            {
                markerFirstPoint  = mapWindow.GetPositionOnMap();
                FirstPointWaiting = false;

                Point squareCordFirstPoint = DirectGeodTask.DirectGeodCalculations.PixelsToSquareCords(markerFirstPoint);

                FirstPointXCordView.Text = $"X: {squareCordFirstPoint.X:f2}";
                FirstPointYCordView.Text = $"Y: {squareCordFirstPoint.Y:f2}";

                mapWindow.SetStatus($"Первая точка установлена: X:{squareCordFirstPoint.X:f2} Y:{squareCordFirstPoint.Y:f2}");

                firstPointMarker.SetLocation(markerFirstPoint);
                firstPointMarker.Show();

                mapWindow.screenCross.Hide();
            }

            if (SecondPointWaiting)
            {
                markerSecondPoint  = mapWindow.GetPositionOnMap();
                SecondPointWaiting = false;

                Point squareCordSecondPoint = DirectGeodTask.DirectGeodCalculations.PixelsToSquareCords(markerSecondPoint);

                SecondPointXCordView.Text = $"X: {squareCordSecondPoint.X:f2}";
                SecondPointYCordView.Text = $"Y: {squareCordSecondPoint.Y:f2}";

                mapWindow.SetStatus($"Вторая точка установлена: X:{squareCordSecondPoint.X:f2} Y:{squareCordSecondPoint.Y:f2}");

                secondPointMarker.SetLocation(markerSecondPoint);
                secondPointMarker.Show();

                mapWindow.screenCross.Hide();
            }

            // Если обе точки были заданы, то можно уже рассчитывать расстояние
            if (markerFirstPoint.X != double.MaxValue && markerSecondPoint.X != double.MaxValue)
            {
                DistanceView.Text = $"Растояние: {GeodCalculations.CalcLength(markerFirstPoint, markerSecondPoint):f2}m";
                distanceViewer.SetPoints(markerFirstPoint, markerSecondPoint);
                distanceViewer.Show();
            }
        }
Example #2
0
        /// <summary>
        /// То, что будет выполняться по нажатию левой кнопки мыши
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void MouseLMBDown(object sender, MouseButtonEventArgs e)
        {
            if (APointWaiting)
            {
                // Добавление новой точки на карте. Получение её координат в пикселях и в метрах
                APoint        = mapWindow.GetPositionOnMap();
                APointWaiting = false;

                // Разместим маркер по полученным координатам,
                APointMarker.SetLocation(APoint);
                APointMarker.Show();

                // Отобразим координаты точки A
                Point printingPoint = DirectGeodCalculations.PixelsToSquareCords(APoint);
                PointAXCord.Text = $"X: {printingPoint.X:f0}";
                PointAYCord.Text = $"Y: {printingPoint.Y:f0}";

                // Уберём перекрестие
                mapWindow.screenCross.Hide();

                // Уведомим пользователя о том, что точка А обработана
                mapWindow.SetStatus("Точка А установлена");
            }

            if (BPointWaiting)
            {
                // Добавление новой точки на карте. Получение её координат в пикселях и в метрах
                BPoint        = mapWindow.GetPositionOnMap();
                BPointWaiting = false;

                // Разместим маркер по полученным координатам,
                BPointMarker.SetLocation(BPoint);
                BPointMarker.Show();

                // Отобразим координаты точки A
                Point printingPoint = DirectGeodCalculations.PixelsToSquareCords(BPoint);
                PointBXCord.Text = $"X: {printingPoint.X:f0}";
                PointBYCord.Text = $"Y: {printingPoint.Y:f0}";

                // Уберём перекрестие
                mapWindow.screenCross.Hide();

                // Уведомим пользователя о том, что точка А обработана
                mapWindow.SetStatus("Точка B установлена");
            }

            if (CPointWaiting)
            {
                // Добавление новой точки на карте. Получение её координат в пикселях и в метрах
                CPoint        = mapWindow.GetPositionOnMap();
                CPointWaiting = false;

                // Разместим маркер по полученным координатам,
                CPointMarker.SetLocation(CPoint);
                CPointMarker.Show();

                // Отобразим координаты точки A
                Point printingPoint = DirectGeodCalculations.PixelsToSquareCords(CPoint);
                PointCXCord.Text = $"X: {printingPoint.X:f0}";
                PointCYCord.Text = $"Y: {printingPoint.Y:f0}";

                // Уберём перекрестие
                mapWindow.screenCross.Hide();

                // Уведомим пользователя о том, что точка А обработана
                mapWindow.SetStatus("Точка C установлена");
            }

            if (APointMarker.IsVisible && BPointMarker.IsVisible && CPointMarker.IsVisible)
            {
                // Отобразим получившийся треугольник
                ABDistanceLine.SetPoints(APoint, BPoint);
                BCDistanceLine.SetPoints(BPoint, CPoint);
                CADistanceLine.SetPoints(CPoint, APoint);

                ABDistanceLine.Show();
                BCDistanceLine.Show();
                CADistanceLine.Show();

                // Включим возможность ввести собственные расчёты
                HaveStudentCalculationsTB.Text       = "Точки введены";
                HaveStudentCalculationsTB.Foreground = Brushes.Green;
                StartStudentInput.IsEnabled          = true;
            }
        }