2015-02-26 2 views
0

J'essaie de sérialiser un canevas d'encre dans WPF. Donc, j'utilise StrokeCollection.Save pour enregistrer les traits à MemoryStream. Mais quand j'essaie de charger le flux dans le InkCanvas, je reçois un ArgumentException indiquant "La longueur des données ISF doit être supérieure à zéro."
est ici l'exemple de code:Enregistrer et charger Ink Canvas StrokeCollection dans/depuis le flux

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

Qu'est-ce que je manque ici?

Répondre

4

Avez-vous vérifié le Position de votre flux?

Je pense qu'après avoir sauvegardé le trait dans celui-ci, il pointera vers la fin.
Essayez de réinitialiser la position du premier caractère, comme celui-ci:

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

Wow, c'est vrai! Je ne sais pas comment je l'ai raté ... – SepehrM

+0

Mon erreur favorite tout en travaillant sur un flux. – VMAtm