У меня есть следующий метод преобразования BitmapImage
в System.Drawing.Bitmap
:
public static Bitmap BitmapImageToBitmap(BitmapImage bitmapImage)
{
Bitmap bitmap;
using (var ms = new MemoryStream())
{
var encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
encoder.Save(ms);
bitmap = new Bitmap(ms);
}
return bitmap;
}
Всякий раз, когда я пытаюсь использовать возвращенный объект Bitmap, я получаю следующую ошибку:
Произошло OutOfMemoryException - Недостаточно памяти.
Однако всякий раз, когда я заменяю код следующим:
public static Bitmap BitmapImageToBitmap(BitmapImage bitmapImage)
{
var ms = new MemoryStream();
var encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
encoder.Save(ms);
return new Bitmap(ms);
}
Это прекрасно работает. Однако я почти уверен, что должен использовать using, поскольку объект MemoryStream
реализует IDisposable
. Что тут происходит?