Сохранение и загрузка Ink Canvas StrokeCollection в/из потока

Я пытаюсь сериализовать чернильный холст в WPF. Поэтому я использую StrokeCollection.Save для сохранения штрихов в MemoryStream. Но когда я пытаюсь загрузить поток в InkCanvas, я получаю сообщение ArgumentException о том, что "Длина данных ISF должна быть больше нуля".
Вот пример кода:

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

Что мне здесь не хватает?


person SepehrM    schedule 26.02.2015    source источник


Ответы (1)


Проверяли ли вы Position вашего потока? ?

Я думаю, что после сохранения в нем штриха он будет указывать на его конец.
Попробуйте сбросить позицию на первый символ, вот так:

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