C# 在映像中使用流后如何处理它?

C# 在映像中使用流后如何处理它?,c#,wpf,image,graphics,stream,C#,Wpf,Image,Graphics,Stream,我有图像的流,我通过下面的代码将其转换为图像 Image imagefromstream = Image.FromStream(stream); 当我在图形中绘制此图像时,它会绘制图像 但是,如果在绘制图形后处理流,则不会绘制图像 是否有人可以帮助我根据MSDN处理图像流: 您必须在映像的生命周期内保持流打开。 您必须在关闭应用程序时(或不再需要映像时)处理该流。在这种情况下,您拥有内存流的直接引用,如果您处理它,映像也将被处理 因此,您从流中获取源并将其保存在BitmapImage中,将该B

我有图像的流,我通过下面的代码将其转换为图像

Image imagefromstream = Image.FromStream(stream);
当我在图形中绘制此图像时,它会绘制图像

但是,如果在绘制图形后处理流,则不会绘制图像

是否有人可以帮助我根据MSDN处理图像流

您必须在映像的生命周期内保持流打开。


您必须在关闭应用程序时(或不再需要映像时)处理该流。

在这种情况下,您拥有内存流的直接引用,如果您处理它,映像也将被处理

因此,您从流中获取源并将其保存在
BitmapImage
中,将该
BitmapImage
设置为图像的源

var imageSource = new BitmapImage();
imageSource.BeginInit();
imageSource.StreamSource = memoryStream;
imageSource.CacheOption= CacheOption.OnLoad;
imageSource.EndInit();

// Assign the Source property of your image
image.Source = imageSource;

请显示有关如何绘制图像和处理流的更多代码。如果这确实是关于WPF的,则根本不应使用
System.Drawing.image
,因为它是WinForms。相反,请使用
System.Windows.Media.Imaging.BitmapImage
,如Sankarann给出的答案所示。这也适用于其他流,而不仅仅是MemoryStream。您可以在
EndInit
之后安全地关闭流。Im使用.NET 4.8和image。源代码似乎不存在。
BitmapImage
是对
System.Windows.Media.Imaging.BitmapImage
的引用吗?如果是这样,那就不是系统绘图的一部分。如果MemoryStream就在一个方法块内呢?我如何在应用程序关闭后或关闭期间处理它?@PamingkasSevada使用一个包装器
IDisposable
(或手动处理的
ValueTuple
),它同时包含
图像
对象,并传递该对象以管理图像的生存期。