2

我想为此目的在内存流中保存一个 Stroke 使用 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);
            }
        }

谢谢。

4

1 回答 1

6

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

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

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

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

于 2012-08-13T12:06:32.233 回答