保存我的鼠标事件绘图以供将来修改

时间:2016-07-09 11:59:30

标签: c# winforms save drawing

我使用(visual studio,windows form,c#)来创建一些绘图。

我的目标是添加保存按钮以保存绘图,当我打开保存的文件以后,我可以继续我以前的工作......

现在发生的事情是,每次打开视觉工作室时,我都需要重新绘制所有内容。

1 个答案:

答案 0 :(得分:1)

第一项任务是收集您在List<T>中绘制的数据。 有关如何收集它们的代码,请参阅(全部)my comments here或Reza的回答here.

这是一个保存&amp;加载可用于绘制曲线的简单PointF列表:

using System.IO;
using System.Xml.Serialization;

// all drawn curve points are collected here:
List<List<PointF>> curves = new List<List<PointF>>();



private void SaveButton_Click(object sender, EventArgs e)
{

    XmlSerializer xmls = new XmlSerializer(typeof(List<List<PointF>>));
    using (Stream writer = new FileStream(yourDrawingFileName, FileMode.Create))
    {
        xmls.Serialize(writer, curves);
        writer.Close();
    }
}

private void LoadButton_Click(object sender, EventArgs e)
{
    if (File.Exists(yourDrawingFileName))
    {

        XmlSerializer xmls = new XmlSerializer(typeof(List<List<PointF>>));
        using (Stream reader = new FileStream(yourDrawingFileName, FileMode.Open))
        {
            var curves_ = xmls.Deserialize(reader);
            reader.Close();
            curves = (List<List<PointF>>) curves_;
            Console.Write(curves.Count + " curves loaded.");
        }
    }
    yourPanelOrPictureBoxOrForm.Invalidate;
}

如果要保存更复杂的绘图操作类,请将PointF替换为yourClass。确保该类是可序列化的! (Points很好,intsstrings当然也是如此; Colors需要一点帮助..)

有关如何设计更复杂的绘制动作类的提示,请参阅here