Справочник по C#

    Исходники по языку программирования CSharp

    Работа с картами в Windows Form с использованием GMap.NET. Часть 3.: Справочник по C#

    /
    /
    /
    120 Views


          Данная инструкция является продолжением обзора компонента по работе с картами – «GMap.NET». По завершению работы с данной инструкцией в вашем проекте будет реализован функционал загрузки карты по определенным координатам, установка масштаба с использованием элемента управления «TrackBar» и сохранение текущего состояния карты в файл с расширением «*.png». Для данной инструкции будет использован пример из первой части (Работа с картами в Windows Form с использованием GMap.NET) обзора данного компонента.
          Запустите Microsoft Visual Studio и откройте скачанный проект. Добавьте на форму два элемента управления:

    • trackBar1 – Элемент управления необходимый для изменения масштаба карты;
    • button1 – Элемент управления необходимый для сохранения карты в виде изображения.

    У вас получится приведенный ниже пример.

          В методе загрузки формы «Form1_Load», при инициализации компонента «gMapControl1» его свойству «Dock» устанавливается значение «DockStyle.Fill», указывающее, что все края элемента управления закрепляются у краев содержащего его элемента управления (Краев формы или элемента управления в котором он расположен), а их размеры изменяются соответствующим образом. Если у вас открыт Конструктор главной формы, нажмите клавишу «F7» для перехода в листинг главной формы. Найдите и удалите приведенную ниже строку кода.

    gMapControl1.Dock = DockStyle.Fill;

          Так же добавьте в конец метода «Form1_Load», приведенные ниже строки кода, устанавливающие максимальное, минимальное и текущее значение элемента управления «trackBar1».

    trackBar1.Maximum = 18;
    trackBar1.Minimum = 2;
    trackBar1.Value = (int)gMapControl1.Zoom;

          Перейдите в Конструктор главной формы и откройте свойства элемента управления «gMapControl1», нажав на него правой клавишей мыши и выбрав из контекстного меню, пункт «Свойства». Перейдите в события данного компонента, нажав в верхней части на значок «Молнии». Найдите событие «OnMapZoomChanged» и сделайте двойной клик левой клавишей мыши по нему. Вы перейдете в листинг главной формы с установкой курсора, в тело автоматически созданного метода «gMapControl1_ OnMapZoomChanged». Данное событие возникает каждый раз при изменении масштаба карты.

          Добавьте приведенный ниже код в тело данного метода. Данный код реализует изменение значения элемента управления «trackBar1», в соответствии со значением масштаба, устанавливаемым в элементе управления «gMapControl1».

    trackBar1.Value = (int)gMapControl1.Zoom;

          Вернитесь в Конструктор главной формы и откройте свойства элемента управления «trackBar1», нажав на него правой клавишей мыши и выбрав из контекстного меню, пункт «Свойства». Найдите свойство «Orientation», отвечающее за визуальное отображение элемента, в вертикальном или горизонтальном положении. Установите у данного свойства, значение «Vertical». Данное значение переводит положение ползунка в вертикальное.
          Перейдите в события данного компонента, нажав в верхней части на значок «Молнии». Найдите событие «Scroll» и сделайте двойной клик левой клавишей мыши по нему. Вы перейдете в листинг главной формы с установкой курсора, в тело автоматически созданного метода «trackBar1_Scroll». Данное событие возникает каждый раз при изменении положения ползунка элемента.

          Добавьте приведенный ниже код в тело данного метода. Данный код реализует изменение значения масштаба элемента управления «gMapControl1», в соответствии со значением, устанавливаемым в элементе управления «trackBar1».

    gMapControl1.Zoom = trackBar1.Value;

          После выполнения этих действий запустите ваш проект, нажав на клавиатуре клавишу «F5». После успешной компиляции у вас откроется карта с установленным масштабом в коде (gMapControl1.Zoom = 6;), равным шести. Переместите курсор на карту и прокрутите колесо мыши назад или вперед. У вас будет изменяться масштаб карты и с ним одновременно будет изменяться положение ползунка на элементе управления «trackBar1», отвечающего за значение масштаба. Так же если теперь изменить положение ползунка вверх или вниз, масштаб карты будет изменяться соответственно.

          Закройте проект, и перейдите в Microsoft Visual Studio и откройте вкладку Конструктора главной формы, сделайте двойной клик левой клавишей мыши по элементу управления «button1», вы перейдёте в автоматически созданный метод «button1_Click», события «Click». Добавьте приведенный ниже код в тело данного метода. Данный код реализует открытие диалогового окна для сохранения текущего состояния карты как изображение в формате «*.png».

    try
    {
    //Инициализируем новую переменную класса SaveFileDialog,
    //открывающий диалоговое окно для сохранения файла.
    using (SaveFileDialog dialog = new SaveFileDialog())
    {
    //Задаем текущую строку фильтра имен файлов,
    //которая определяет варианты, доступные в поле
    //"Сохранить как тип файла" или "Файлы типа"
    //диалогового окна.
    dialog.Filter = "PNG (*.png)|*.png";
    
    //Задаем строку, содержащую имя файла,
    //выбранное в диалоговом  окне файла.
    dialog.FileName = "GMap.NET image";
    
    //Создаем новое изображение и
    //передаем компонент с картой.
    Image image = this.gMapControl1.ToImage();
    
    if (image != null)
    {
    using (image)
    {
    //Запускаем общее диалоговое окно с
    //заданным по умолчанию владельцем.
    //Данное окно возвращает объект
    //System.Windows.Forms.DialogResult.OK,
    //если пользователь нажимает кнопку
    //ОК в диалоговом окне; в противном случае
    //— объект System.Windows.Forms.DialogResult.Cancel.
    //Если пользователь нажал ОК, то идем дальше.
    if (dialog.ShowDialog() == DialogResult.OK)
    {
    //Заносим в переменную имя файла введенное
    //в диалоговом окне.
    string fileName = dialog.FileName;
    
    //Выполняем проверку:
    //был ли задан формат изображения карты,
    //если нет, то добавляем после имени
    //расширение файла.
    if (!fileName.EndsWith(".png",
    StringComparison.OrdinalIgnoreCase))
    {
    fileName += ".png";
    }
    //Выполняем сохранение изображения карты.
    image.Save(fileName);
    
    //Выводим сообщение об успешном сохранении
    //и пути к данному изображению карты.
    MessageBox.Show("Карта успешно сохранена в директории: "
    + Environment.NewLine
    + dialog.FileName, "GMap.NET",
    MessageBoxButtons.OK,
    MessageBoxIcon.Asterisk);
    }
    }
    }
    }
    }
    catch (Exception exception)
    {
    //Если на одном из этапов сохранения произошла ошибка
    MessageBox.Show("Ошибка при сохранении карты: "
    + Environment.NewLine
    + exception.Message,
    "GMap.NET",
    MessageBoxButtons.OK,
    MessageBoxIcon.Hand);
    }

          Снова запустите ваш проект, нажав на клавиатуре клавишу «F5». Нажмите на кнопку «Сохранить», у вас откроется диалоговое окно сохранения изображения, в формате «*.png» и по умолчанию заданным именем «GMap.NET image». Пример сохраненного изображения представлен ниже.

          После успешного сохранения изображения, у вас появится сообщение содержащее путь к нему.

    Ссылка для скачивания примера: Яндекс.Диск

    Работа с картами в Windows Form с использованием GMap.NET. Часть 3.: Справочник по C#

    0.00 (0%) 0 votes

    moyadcode13
    • Facebook
    • Twitter
    • Google+
    • Linkedin
    • Pinterest
    moyadcode10
    moyadcode11
    moyadcode9