将Ink Canvas StrokeCollection保存并加载到流中

时间:2015-02-26 13:20:11

标签: c# wpf serialization inkcanvas

我正在尝试在WPF中序列化墨迹画布。所以我使用StrokeCollection.Save将笔画保存到MemoryStream。但是当我尝试将流加载到InkCanvas时,我得到ArgumentException说明“ISF数据的长度必须大于零。”
这是代码示例:

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

我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

您是否检查过您的信息流的Position

我认为在将笔划保存到它之后,它将指向它的结尾 尝试将位置重置为第一个字符,如下所示:

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