我想序列化System.Windows.Media.PixelFormat
对象,然后通过反序列化重新创建它。我在做什么:
BitmapSource bitmapSource = backgroundImage.ImageSource as BitmapSource;
PixelFormat pixelFormat = bitmapSource.Format;
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("test", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, pixelFormat);
stream.Close();
接着
PixelFormat pixelFormat;
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("test", FileMode.Open, FileAccess.Read, FileShare.Read);
pixelFormat = (PixelFormat)formatter.Deserialize(stream);
stream.Close();
序列化不会给出任何错误。当我尝试反序列化此对象时,它也没有给出任何错误,但返回的对象不好,例如在BitsPerPixel
它具有的字段中BitsPerPixel = 'pixelFormat.BitsPerPixel' threw an exception of type 'System.NotSupportedException'
@edit 我有一个解决这个问题的方法。我们必须使用 PixelFormatConverter 将 PixelFormat 对象转换为字符串,然后将字符串序列化。反序列化时,我们获取字符串并使用 PixelFormatConverter 将其转换回 PixelFormat。