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