我想在内存流中保存笔划 为此目的使用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);
}
}
感谢。
答案 0 :(得分:6)
这不起作用的原因是StrokeCollection
没有应用SerializableAttribute
。
但您可以使用StrokeCollection.Save
方法。
var ms = new MemoryStream();
using (ms)
{
StrokeCollection sc = ...;
sc.Save(ms);
ms.Position = 0;
}
然后当您再次需要StrokeCollection
时,您可以使用接受Stream
的{{3}}。