Я разрабатываю приложение WPF, которое поддерживает пользовательские настройки bru sh и модификацию изображений. Если пользователь вводит данные мыши, Bitmap модифицируется, преобразуется в BitmapImage и затем отображается. В большинстве случаев проблема не возникает, но приложение останавливается, когда я оставляю приложение без ввода в течение определенного времени (около 3 ~ 5 минут).
Это блок кода, который я использую для Bitmap -> BitmapImage модификация
BitmapImage BitmapToImageSource(Bitmap bitmap) {
using (MemoryStream memory = new MemoryStream()) {
bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Png);
memory.Position = 0;
BitmapImage bitmapimage = new BitmapImage();
bitmapimage.BeginInit();
bitmapimage.StreamSource = memory;
bitmapimage.DecodePixelWidth = bitmap.Width;
bitmapimage.DecodePixelHeight = bitmap.Height;
bitmapimage.CacheOption = BitmapCacheOption.OnLoad;
bitmapimage.EndInit();
return bitmapimage;
}
}
Приложение останавливается на
bitmap.save(memory, System.Drawing.Imaging.ImageFormat.Png);
Код для отображения BitmapImage
myWindow.myImageName.Source = BitmapToImageSource(myBitmap);
//I work at different class from .xaml.cs
Однако, это не выдает ошибку. Приложение просто останавливается и не работает.
Есть ли какая-либо проблема, связанная с тем, что растровые данные не сохраняются в потоке памяти? Или есть ли способы отображения растрового изображения в изображение WPF без сохранения растрового изображения в памяти?