Сохранение и восстановление чертежей линий в C#

Пример Рисование и перемещение сегментов линии в C# показывает, как создать простой редактор строк. Этот пример добавляет возможность сохранять и восстанавливать чертежи.

Первый шаг - сохранить всю информацию о чертеже в одном объекте. Вы можете сохранить информацию в массиве или списке, но это, вероятно, проще всего, если вы сохраните все в объекте из определенного вами класса.

В предыдущей версии программы сохранялись конечные точки сегментов линии в двух списках точек. В этом примере для представления рисунка используется следующий класс.

// Класс для сериализации и десериализации чертежей.
public class Drawing
{
    public List Pt1 = new List();
    public List Pt2 = new List();
}

Основная программа использует следующий объект для хранения точек линий.

// Точки, составляющие сегменты линий.
private Drawing TheDrawing = new Drawing();

Большая часть кода основной программы похожа на предыдущую версию, за исключением того, что использует этот объект вместо отдельных списков точек.

Следующий код показывает, как программа сохраняет чертеж.

// Сохраните сериализацию чертежа.
private void mnuFileSaveAs_Click(object sender, EventArgs e)
{
    if (sfdSave.ShowDialog() == DialogResult.OK)
    {
        // Сериализация.
        XmlSerializer xml_serializer =
            new XmlSerializer(TheDrawing.GetType());
        using (StreamWriter stream_writer =
            new StreamWriter(sfdSave.FileName))
        {
            xml_serializer.Serialize(stream_writer, TheDrawing);
            stream_writer.Close();
        }
    }
}

В этом коде отображается SaveFileDialog. Если пользователь выбирает файл и нажимает кнопку «Сохранить», код создает XmlSerializer для работы с типом объекта TheDrawing. Он создает StreamWriter для записи в нужный файл, а затем использует сериализатор для записи сериализации объекта чертежа в файл.

Следующий код показывает, как программа загружает сохраненный чертеж.

// Загрузите сериализацию чертежа.
private void mnuFileOpen_Click(object sender, EventArgs e)
{
    if (ofdLoad.ShowDialog() == DialogResult.OK)
    {
        try
        {
            XmlSerializer xml_serializer =
                new XmlSerializer(TheDrawing.GetType());
            using (FileStream file_stream =
                new FileStream(ofdLoad.FileName, FileMode.Open))
            {
                Drawing new_drawing =
                    (Drawing)xml_serializer.Deserialize(file_stream);
                TheDrawing = new_drawing;
                picCanvas.Refresh();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

В этом коде отображается OpenFileDialog. Если пользователь выбирает файл и нажимает «Открыть», код создает XmlSerializer для работы с типом объекта TheDrawing. Он создает StreamWriter для чтения из выбранного файла и затем использует сериализатор для десериализации данных в файле, преобразуя результат в объект Drawing. Если все это удастся, код сохранит новый объект Рисование в переменной TheDrawing и перерисовывает.

Источник: http://csharphelper.com/blog/2016/11/save-restore-line-drawings-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector