У меня возникла проблема с этим. Вот мой код.«Общая ошибка в GDI +» при сохранении изображения
int frame = 0;
//This is a wpf button event
private void up_Click(object sender, RoutedEventArgs e)
{
frame++;
LoadPic();
}
private void LoadPic()
{
string fn = @"C:\Folder\image" + (frame % 2).ToString() + ".png";
Bitmap bmp = new Bitmap(302, 170);
bmp.Save(fn);
bmp.Dispose();
//Picebox is a wpf Image control
Picbox.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri(fn));
}
private void down_Click(object sender, RoutedEventArgs e)
{
frame--;
LoadPic();
}
Когда я запускаю программу, открывается окно wpf. Есть две кнопки с событиями, показанными в коде.
Когда я нажимаю кнопку вверх дважды, он работает нормально. Это экономит два PNGs в местах
"C: \ Folder \ image0.png" и "C: \ Folder \ image1.png"
В третий раз нажать на кнопку, она должна сохранить его в " C: \ Folder \ image0.png "снова. Вместо этого он дает исключение «Общая ошибка произошла в GDI +».
Я имел подобную проблему раньше, и решить ее, добавив следующие две строки:
GC.Collect();
GC.WaitForPendingFinalizers();
Это не сработало на этот раз.
Попробуйте прокомментировать строку 'Picbox.Source = ...' и посмотреть, может ли она ее сохранить. Я предполагаю, что изображение по какой-то причине заблокировано этой строкой. –
Вы правы. Я забыл упомянуть, что – phil