Сохранение и восстановление чертежей линий в 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 и перерисовывает.

 
																							 
																							