如何在c#中序列化StrokeCollection

inf*_*ity 2 c# memorystream binaryformatter c#-4.0

我想在内存流中保存一个笔画用于此目的是使用BinaryFormatter但是当我尝试序列化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);
            }
        }
Run Code Online (Sandbox Code Playgroud)

谢谢.

Ron*_*erg 6

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

但是你可以使用这个StrokeCollection.Save方法.

var ms = new MemoryStream();
using (ms)
{
    StrokeCollection sc = ...;
    sc.Save(ms);
    ms.Position = 0;
}
Run Code Online (Sandbox Code Playgroud)

然后当你StrokeCollection再次需要时,你可以使用接受a 的构造函数Stream.