2015-09-25 48 views
0

我有一個WPF項目,我使用了綁定到UI的System.Drawing.Bitmap屬性。這是反序列化和序列化使用DataContractSerializer。如果我將其更改爲System.Windows.Media.Imaging.BitmapImage,那麼在反序列化後我會得到空StreamSource爲什麼Bitmap可以使用DataContractSerializer序列化,但BitmapImage不是?

在查找所以我發現不可能/建議序列化BitmapImage。任何人都可以請告訴我爲什麼這是不可能的?

謝謝。

+0

BitmapImage似乎不是標準庫類型。它是什麼名稱空間? – Nebula

+0

感謝您的回覆。它來自'System.Windows.Media.Imaging'命名空間。 –

+0

設置StreamSource屬性時,不應該序列化位圖,而應改爲原始流緩衝區。如果它是從字節數組初始化的MemoryStream,則可以輕鬆地序列化字節數組。 – Clemens

回答

1

要直接回答你的問題:位圖可以用DataContractSerializer序列化,因爲Bitmap實現了ISerializable接口。這意味着Bitmap類的開發人員會特別注意實現序列化\反序列化邏輯並使其可用。與BitmapImage類不同的是,它甚至沒有用Serializable屬性標記,所以不打算直接序列化。 DataContractSerializer嘗試它是最好的,但它無法序列化諸如StreamSource之類的屬性而沒有指導,因爲Stream是抽象類,並且它不知道如何序列化\反序列化(假設StreamSource是FileStream - 它應該怎麼做?)。

相關問題