保存并加载 Ink Canvas StrokeCollection to/from 流

Save and load Ink Canvas StrokeCollection to/from stream

我正在尝试在 WPF 中序列化墨迹 canvas。所以我使用 StrokeCollection.Save 将笔画保存到 MemoryStream。但是当我尝试将流加载到 InkCanvas 时,我得到一个 ArgumentException 说明 "The length of the ISF data must be greater than zero."
这是代码示例:

using (MemoryStream ms = new MemoryStream())
{
    inkcanvas.Strokes.Save(ms);
    inkcanvas.Strokes = new System.Windows.Ink.StrokeCollection(ms);
}

我在这里错过了什么?

你检查过你的流的 Position 了吗?

我觉得把笔画存进去之后会指向笔画的结尾
尝试将位置重置为第一个字符,如下所示:

using (MemoryStream ms = new MemoryStream())
{
    inkcanvas.Strokes.Save(ms);
    ms.Position = 0;
    inkcanvas.Strokes = new System.Windows.Ink.StrokeCollection(ms);
}