我使用以下代码动态创建图像:
Public Function ToBitmapImage(byteArray As Byte()) As BitmapImage
Dim image As New BitmapImage()
Dim stream As New MemoryStream(byteArray)
image.BeginInit()
image.StreamSource = stream
image.EndInit()
image.Freeze()
Return image
End Function然后,我尝试用以下代码克隆包含图像的一个对象:
Public Function Clone(Of T As DependencyObject)(orginal As T) As T
If (orginal Is Nothing) Then
Return Nothing
End If
Using stream As New MemoryStream()
XamlWriter.Save(orginal, stream)
stream.Position = 0
Return CType(XamlReader.Load(stream), T)
End Using
End Function这些图像被序列化为:
...xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation"...
<av:Image ...>
<av:Image.Source>
<av:BitmapImage BaseUri="{x:Null}" />
</av:Image.Source>
</av:Image>BaseUri="{x:Null}"导致了Initialization of 'System.Windows.Media.Imaging.BitmapImage' threw an exception. rownumber 1 row position xxx.,有没有办法强迫它这样序列化BitmapImage中的数据而不是baseUrl?
发布于 2016-05-27 07:32:19
我找到了一个难看的解决方案,而不是使用image.StreamSource = stream,而是将它们写到一个临时文件中,并将BaseUri和UriSource设置为文件位置。
这意味着我必须删除文件,当我完成了他们,所以如果有一个更好的解决方案,我感兴趣!
https://stackoverflow.com/questions/37475978
复制相似问题