如何在c#中序列化StrokeCollection

时间:2012-08-13 12:03:09

标签: c# c#-4.0 memorystream binaryformatter

我想在内存流中保存笔划 为此目的使用BinaryFormatter,但当我尝试序列化Stroke我得到一个错误,我不能序列化Stroke

有没有办法将Stroke保存在内存流中或序列化Stroke?

这是我的代码的一部分

int size = inkCanvas1.Strokes.Count();
        IFormatter formatter = new BinaryFormatter();
        MemoryStream stream = new MemoryStream();
        if (size != 0)
        {
            try
            {
                formatter.Serialize(stream, inkCanvas1.Strokes[size - 1]);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

感谢。

1 个答案:

答案 0 :(得分:6)

这不起作用的原因是StrokeCollection没有应用SerializableAttribute

但您可以使用StrokeCollection.Save方法。

var ms = new MemoryStream();
using (ms)
{
    StrokeCollection sc = ...;
    sc.Save(ms);
    ms.Position = 0;
}

然后当您再次需要StrokeCollection时,您可以使用接受Stream的{​​{3}}。