以下のプログラムではエラーが発生します。
Bitmap^ b1 = gcnew Bitmap("C:\\tmp.png");
Bitmap^ b2 = gcnew Bitmap(b1->Width, b1->Height);
Graphics^ g = Graphics::FromImage(b2);
g->DrawImage(b1, 0, 0, b1->Width, b1->Height);
b2->Save("C:\\tmp.png", System::Drawing::Imaging::ImageFormat::Png);
原因は、同一ファイル名でセーブしようしましたが、b1 がファイルオープンのままになっているからです。
b1 を解放すればエラーは回避できます。
Bitmap^ b1 = gcnew Bitmap("C:\\tmp.png");
Bitmap^ b2 = gcnew Bitmap(b1->Width, b1->Height);
Graphics^ g = Graphics::FromImage(b2);
g->DrawImage(b1, 0, 0, b1->Width, b1->Height);
delete b1;
b2->Save("C:\\tmp.png", System::Drawing::Imaging::ImageFormat::Png);
Bitmap^ b1 = gcnew Bitmap("C:\\tmp.png");
Bitmap^ b2 = gcnew Bitmap(b1->Width, b1->Height);
Graphics^ g = Graphics::FromImage(b2);
g->DrawImage(b1, 0, 0, b1->Width, b1->Height);
b2->Save("C:\\tmp.png", System::Drawing::Imaging::ImageFormat::Png);
原因は、同一ファイル名でセーブしようしましたが、b1 がファイルオープンのままになっているからです。
b1 を解放すればエラーは回避できます。
Bitmap^ b1 = gcnew Bitmap("C:\\tmp.png");
Bitmap^ b2 = gcnew Bitmap(b1->Width, b1->Height);
Graphics^ g = Graphics::FromImage(b2);
g->DrawImage(b1, 0, 0, b1->Width, b1->Height);
delete b1;
b2->Save("C:\\tmp.png", System::Drawing::Imaging::ImageFormat::Png);